Signatur
Beschreibung
values() erzeugt einen Array-Iterator, der beim Durchlaufen jeden Elementwert des Arrays in Index-Reihenfolge liefert. Array.prototype.values ist dieselbe Funktion wie Array.prototype[Symbol.iterator]. Deshalb verhält sich for (const x of arr.values()) genau wie for (const x of arr).
Nützlich ist die Methode vor allem, wenn Sie einen Iterator ausdrücklich brauchen: um ihn schrittweise mit next() abzufragen, um ihn an eine Funktion zu übergeben, die ein iterierbares Objekt erwartet, oder um Iterator-Helfer wie map(), filter() oder take() (ES2025) lazy zu verketten, ohne Zwischen-Arrays anzulegen.
Der Iterator arbeitet live. Er kopiert das Array nicht, sondern liest bei jedem Schritt den aktuellen Wert am nächsten Index. Änderungen am Array während der Iteration wirken sich also aus. Lücken in dünn besetzten Arrays (sparse arrays) liefert der Iterator als undefined, er überspringt sie nicht. Die Methode ist generisch und funktioniert auch mit array-ähnlichen Objekten, die eine length-Eigenschaft und Index-Schlüssel haben.
Rückgabewert
next() liefert { value, done } mit dem nächsten Elementwert, bis done den Wert true hat.Beispiele
Werte mit for...of durchlaufen
const farben = ['rot', 'grün', 'blau'];
for (const farbe of farben.values()) {
console.log(farbe);
}
Iterator schrittweise mit next() abfragen
const schritte = ['Laden', 'Prüfen', 'Speichern'];
const it = schritte.values();
console.log(it.next()); // erster Schritt
console.log(it.next().value);
console.log(it.next().value);
console.log(it.next()); // erschöpft
Iterator ist nach einem Durchlauf verbraucht
const zahlen = [1, 2, 3];
const it = zahlen.values();
console.log([...it]); // erster Durchlauf
console.log([...it]); // leer – Iterator ist erschöpft
Lazy verarbeiten mit Iterator-Helfern und array-ähnlichen Objekten
// Iterator-Helfer (ES2025, moderne Browser / Node.js 22+)
const preise = [12, 99, 5, 240, 48];
const teure = preise.values()
.filter((p) => p > 40)
.map((p) => `${p} €`)
.toArray();
console.log(teure);
// Generisch auf array-ähnlichen Objekten
const arrayLike = { length: 2, 0: 'a', 1: 'b' };
console.log([...Array.prototype.values.call(arrayLike)]);
// Wichtig · Fallstricke
- Einmalig verwendbar: Ein Iterator lässt sich nicht zurücksetzen. Für einen zweiten Durchlauf rufen Sie
values()erneut auf. - Live-Verhalten: Wenn Sie während der Iteration Elemente hinzufügen oder entfernen, ändert sich, welche Werte der Iterator liefert. Kürzen Sie das Array z. B. per
pop(), endet die Iteration früher. - Lücken: Anders als
forEach()liefertvalues()für leere Plätze in dünn besetzten Arrays den Wertundefined. - Kein Array: Der Rückgabewert ist ein Iterator und kein Array. Methoden wie
lengthoderslice()fehlen. Mit[...it]oderArray.from(it)wandeln Sie ihn in ein Array um. - Kompatibilität: Die Methode ist seit ES2015 in allen modernen Browsern und in Node.js verfügbar. Iterator-Helfer wie
.map()und.filter()direkt auf dem Iterator gehören zu ES2025 und fehlen in älteren Umgebungen.