Start · Sprachen · JavaScript · Referenz · Array.prototype.toString()

Array.prototype.toString()

Methode

Gibt einen String zurück, in dem alle Elemente des Arrays in Strings umgewandelt und durch Kommas getrennt sind.

seit JavaScript ES1 – Baseline: alle Browser Kategorie: method-property

Signatur

Array.prototype.toString()

Beschreibung

Array.prototype.toString() überschreibt Object.prototype.toString() und liefert eine lesbare String-Darstellung eines Arrays. Intern ruft die Methode this.join() ohne Argument auf. Die Elemente werden also in Strings umgewandelt und mit einem Komma , ohne Leerzeichen verbunden.

Die Methode wird selten direkt aufgerufen. JavaScript ruft sie automatisch auf, sobald ein Array in einen String umgewandelt werden muss, etwa bei der String-Verkettung mit +, in Template-Literalen (`${arr}`), bei String(arr) oder wenn ein Array als Eigenschaftsschlüssel benutzt wird.

Besondere Werte: null und undefined sowie Lücken in dünn besetzten Arrays werden zu leeren Strings. Verschachtelte Arrays werden rekursiv „flach“ ausgegeben, weil für jedes Element wieder dessen toString() aufgerufen wird. Objekte erscheinen als [object Object].

Die Methode ist absichtlich generisch. Hat this keine aufrufbare join-Methode, weicht sie auf Object.prototype.toString() aus und liefert zum Beispiel [object Object].

Rückgabewert

Typ
string
Beschreibung
Die mit Kommas verbundenen String-Darstellungen aller Elemente. Bei einem leeren Array ist das ein leerer String "".

Beispiele

Grundlegende Umwandlung

const farben = ['rot', 'grün', 'blau'];
console.log(farben.toString());
console.log([1, 2, 3].toString());
console.log([].toString() === '');
rot,grün,blau 1,2,3 true

Automatischer Aufruf bei der String-Umwandlung

const tags = ['js', 'web', 'api'];
console.log('Tags: ' + tags);
console.log(`Tags: ${tags}`);
console.log(String(tags));

// Array als Objektschlüssel wird zu "1,2"
const cache = {};
cache[[1, 2]] = 'Punkt';
console.log(Object.keys(cache));
Tags: js,web,api Tags: js,web,api js,web,api [ '1,2' ]

Besondere Werte, Lücken und Verschachtelung

console.log([1, null, undefined, 4].toString());
console.log([1, , 3].toString());
console.log([1, [2, [3, 4]], 5].toString());
console.log([{ id: 1 }, 'x'].toString());
1,,,4 1,,3 1,2,3,4,5 [object Object],x

Eigenes Trennzeichen: besser join() verwenden

const zeile = ['Max', 'Mustermann', 42];
// toString() erlaubt kein Trennzeichen
console.log(zeile.toString());
// Für CSV mit Semikolon oder für lesbare Ausgaben:
console.log(zeile.join(';'));
console.log(zeile.join(', '));
Max,Mustermann,42 Max;Mustermann;42 Max, Mustermann, 42

// Wichtig · Fallstricke

  • Kein Trennzeichen wählbar: Für andere Trennzeichen join(separator) verwenden.
  • Informationsverlust: [1, [2, 3]] und [1, 2, 3] ergeben beide "1,2,3". Auch null, undefined und Lücken lassen sich nicht voneinander unterscheiden. Zum Serialisieren oder Vergleichen besser JSON.stringify() nutzen.
  • Vergleiche mit ==: Die implizite Umwandlung führt zu überraschenden Ergebnissen, z. B. [] == '' → true, [1,2] == '1,2' → true, [0] == false → true. Darum immer === verwenden.
  • Zirkuläre Referenzen: Enthält ein Array sich selbst, geben Engines für die Rekursion einen leeren String aus, statt endlos zu laufen: const a = [1]; a.push(a); String(a) → "1,".
  • Lokalisierung: Zahlen und Datumswerte werden nicht länderspezifisch formatiert. Dafür gibt es toLocaleString().
  • Auf Typed Arrays gibt es dieselbe Methode (TypedArray.prototype.toString verweist auf dieselbe Funktion).