Signatur
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
"".Beispiele
Grundlegende Umwandlung
const farben = ['rot', 'grün', 'blau'];
console.log(farben.toString());
console.log([1, 2, 3].toString());
console.log([].toString() === '');
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));
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());
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(', '));
// 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". Auchnull,undefinedund Lücken lassen sich nicht voneinander unterscheiden. Zum Serialisieren oder Vergleichen besserJSON.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.toStringverweist auf dieselbe Funktion).