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

TypedArray.prototype.join()

Methode

Verkettet alle Elemente eines typisierten Arrays zu einem String, getrennt durch Kommas oder einen frei wählbaren Trennstring.

seit JavaScript ES2015 Kategorie: method-property

Signatur

TypedArray.prototype.join(separator)

Beschreibung

Die Methode join() wandelt jedes Element eines typisierten Arrays (z. B. Uint8Array, Float32Array, BigInt64Array) in einen String um und fügt diese Strings zu einem einzigen neuen String zusammen. Zwischen die Elemente wird der angegebene Trennstring gesetzt. Ohne Argument ist das ein Komma ",".

Sie arbeitet nach demselben Algorithmus wie Array.prototype.join(). Weil ein typisiertes Array nur Zahlen bzw. BigInts enthält, gibt es hier aber keine Lücken und keine Sonderbehandlung von null/undefined. Das Array selbst bleibt unverändert.

Typische Einsatzfälle: Binärdaten zum Debuggen lesbar ausgeben, Messwerte als CSV-Zeile serialisieren oder Bytes als Hex-String darstellen (zusammen mit Array.from() oder map()).

Parameter

Name Typ Default Beschreibung
$separator string "," Trennstring, der zwischen zwei benachbarte Elemente gesetzt wird. Andere Werte werden in einen String umgewandelt. Bei undefined wird ein Komma verwendet, bei "" werden die Elemente ohne Trennzeichen aneinandergehängt.

Rückgabewert

Typ
string
Beschreibung
Ein neuer String mit allen Elementen, verbunden durch separator. Ist das Array leer (length === 0), ist das Ergebnis der leere String "".

Beispiele

Standard-Trenner und eigener Trenner

const bytes = new Uint8Array([10, 20, 30]);

console.log(bytes.join());      // Komma als Standard
console.log(bytes.join(' | '));
console.log(bytes.join(''));
10,20,30 10 | 20 | 30 102030

Messwerte als CSV-Zeile exportieren

const messwerte = new Float32Array([21.5, 22.25, 19.75]);
const kopfzeile = ['Sensor1', 'Sensor2', 'Sensor3'].join(';');
const datenzeile = messwerte.join(';');

const csv = `${kopfzeile}\n${datenzeile}`;
console.log(csv);
Sensor1;Sensor2;Sensor3 21.5;22.25;19.75

Bytes als Hex-String darstellen

const hash = new Uint8Array([0xde, 0xad, 0xbe, 0xef, 0x07]);

// map() auf dem TypedArray liefert wieder Zahlen, daher Array.from nutzen
const hex = Array.from(hash, (b) => b.toString(16).padStart(2, '0')).join('');
console.log(hex);

// Direkt: Dezimalwerte mit Leerzeichen
console.log(hash.join(' '));
deadbeef07 222 173 190 239 7

BigInt-Array und leeres Array

const gross = new BigInt64Array([1n, -2n, 9007199254740993n]);
console.log(gross.join(', '));

console.log(JSON.stringify(new Int16Array(0).join('-')));
1, -2, 9007199254740993 ""

// Wichtig · Fallstricke

  • Kein Umweg über map() für Strings: typedArray.map(x => x.toString(16)) liefert wieder ein typisiertes Array desselben Typs. Die Strings werden dabei zurück in Zahlen umgewandelt (meist 0 oder NaN). Für formatierte Ausgaben deshalb zuerst mit Array.from() umwandeln.
  • Gleitkomma-Darstellung: Float32Array speichert Werte mit einfacher Genauigkeit. new Float32Array([0.1]).join() ergibt deshalb "0.10000000149011612", nicht "0.1".
  • join() ist nicht generisch: Mit call() auf ein Objekt angewendet, das kein typisiertes Array ist, wirft die Methode einen TypeError. Das gilt auch für ein Array, dessen ArrayBuffer abgelöst (detached) wurde.
  • toString() eines typisierten Arrays entspricht join(","). toLocaleString() formatiert die Zahlen dagegen nach der Gebietsschema-Einstellung.
  • Bei sehr großen Arrays entsteht ein entsprechend großer String. Für Binärdaten sind TextDecoder oder Base64 oft effizienter.
  • Kompatibilität: Baseline, wird seit ES2015 von allen modernen Browsern und Node.js unterstützt.