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

TypedArray.prototype.toString()

Methode

Gibt die Elemente eines typisierten Arrays als kommagetrennten String zurück, z. B. <code>"1,2,3"</code>.

seit JavaScript ES2015 Kategorie: method-property

Signatur

TypedArray.prototype.toString()

Beschreibung

toString() wandelt ein typisiertes Array (z. B. Uint8Array, Float32Array, BigInt64Array) in einen String um. Jedes Element wird in einen String umgewandelt, und die Teile werden mit Kommas ohne Leerzeichen verbunden. Die Methode ist dabei dasselbe Funktionsobjekt wie Array.prototype.toString: Uint8Array.prototype.toString === Array.prototype.toString ergibt true.

Intern ruft die Methode this.join() auf. Das Ergebnis ist also dasselbe wie bei typedArray.join(","). JavaScript ruft toString() automatisch auf, sobald ein typisiertes Array als String gebraucht wird, zum Beispiel bei der String-Verkettung mit +, in Template-Literalen oder bei String(typedArray).

Nützlich ist die Methode vor allem für schnelle Debug-Ausgaben, Logs oder einfache Serialisierung. Für ein anderes Trennzeichen nimmst du join(), für sprachabhängige Zahlenformate toLocaleString(). Für eine echte Datenübertragung eignen sich JSON.stringify(Array.from(ta)) oder eine Base64-Kodierung besser.

Rückgabewert

Typ
string
Beschreibung
Ein String mit allen Elementen, getrennt durch Kommas. Bei einem leeren typisierten Array ist das ein leerer String "".

Beispiele

Einfache Umwandlung in einen String

const bytes = new Uint8Array([10, 20, 30, 255]);
console.log(bytes.toString());

const floats = new Float32Array([1.5, 2.25, -0.5]);
console.log(floats.toString());
10,20,30,255 1.5,2.25,-0.5

Automatischer Aufruf in Template-Literalen und bei Verkettung

const pixel = new Uint8ClampedArray([255, 128, 0, 255]);

// toString() wird implizit aufgerufen
console.log(`RGBA: ${pixel}`);
console.log('Werte: ' + pixel);
console.log(String(new Int16Array(0)) === '');
RGBA: 255,128,0,255 Werte: 255,128,0,255 true

Vergleich mit join(), toLocaleString() und JSON

const data = new Float64Array([1234.5, 0.1, 42]);

console.log(data.toString());            // wie join(',')
console.log(data.join(' | '));           // eigenes Trennzeichen
console.log(data.toLocaleString('de-DE')); // lokalisierte Zahlen
console.log(JSON.stringify(data));        // Objekt mit Index-Schlüsseln!
console.log(JSON.stringify(Array.from(data)));
1234.5,0.1,42 1234.5 | 0.1 | 42 1.234,5,0,1,42 {"0":1234.5,"1":0.1,"2":42} [1234.5,0.1,42]

BigInt-Arrays in Debug-Logs

const ids = new BigUint64Array([1n, 2n ** 40n, 18446744073709551615n]);
console.log(`IDs: ${ids}`);
IDs: 1,1099511627776,18446744073709551615

// Wichtig · Fallstricke

  • Kein eigenes Format: Die Ausgabe enthält weder den Typnamen noch eckige Klammern. new Uint8Array([1,2]) und new Float64Array([1,2]) ergeben beide "1,2". Den Typ bekommst du zusätzlich über ta.constructor.name oder Object.prototype.toString.call(ta), was "[object Uint8Array]" liefert.
  • Die Ausgabe ist mehrdeutig: toLocaleString('de-DE') nutzt Kommas als Dezimaltrennzeichen, sodass sich Elementgrenzen nicht mehr erkennen lassen. Für eindeutige Ausgaben nimmst du join() mit einem passenden Trennzeichen.
  • Abgekoppelter Puffer: Wurde der zugrunde liegende ArrayBuffer abgekoppelt (detached), etwa nach postMessage mit Transfer oder ArrayBuffer.prototype.transfer(), dann ist die Länge 0 und das Ergebnis ist "".
  • JSON: JSON.stringify(typedArray) nutzt nicht toString(). Es erzeugt ein Objekt mit Index-Schlüsseln. Wandle das Array vorher mit Array.from() um.
  • Performance: Bei sehr großen Arrays (etwa Megabytes an Binärdaten) entstehen riesige Strings. Für Logs solltest du daher vorher mit subarray() einen Ausschnitt nehmen.
  • Kompatibilität: Wird von allen modernen Browsern und von Node.js unterstützt (Baseline). BigInt64Array und BigUint64Array gibt es seit ES2020.