Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Array.prototype[Symbol.iterator]()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Die Methode[Symbol.iterator]() vonArray Instanzen implementiert dasiterable Protocol und ermöglicht es Arrays, von den meisten Syntaxen konsumiert zu werden, die Iterables erwarten, wie zum Beispiel demSpread-Syntax undfor...of Schleifen. Sie gibt einArray-Iterator-Objekt zurück, das den Wert jedes Indexes im Array liefert.
Der anfängliche Wert dieser Eigenschaft ist das gleiche Funktionsobjekt wie der anfängliche Wert der EigenschaftArray.prototype.values.
In diesem Artikel
Probieren Sie es aus
const array = ["a", "b", "c"];const iterator = array[Symbol.iterator]();for (const value of iterator) { console.log(value);}// Expected output: "a"// Expected output: "b"// Expected output: "c"Syntax
array[Symbol.iterator]()Parameter
Keine.
Rückgabewert
Der gleiche Rückgabewert wieArray.prototype.values(): ein neuesiterables Iterator-Objekt, das den Wert jedes Indexes im Array liefert.
Beispiele
>Iteration mit der for...of Schleife
Beachten Sie, dass Sie diese Methode selten direkt aufrufen müssen. Die Existenz der[Symbol.iterator]() Methode macht Arraysiterable, und Iterations-Syntaxen wie diefor...of Schleife rufen diese Methode automatisch auf, um den Iterator zu erhalten, über den iteriert werden soll.
HTML
<ul></ul>JavaScript
const arr = ["a", "b", "c"];const letterResult = document.getElementById("letterResult");for (const letter of arr) { const li = document.createElement("li"); li.textContent = letter; letterResult.appendChild(li);}Ergebnis
Manuelles Erstellen des Iterators
Sie können dienext() Methode des zurückgegebenen Iterator-Objekts dennoch manuell aufrufen, um die maximale Kontrolle über den Iterationsprozess zu erhalten.
const arr = ["a", "b", "c", "d", "e"];const arrIter = arr[Symbol.iterator]();console.log(arrIter.next().value); // aconsole.log(arrIter.next().value); // bconsole.log(arrIter.next().value); // cconsole.log(arrIter.next().value); // dconsole.log(arrIter.next().value); // eHandhabung von Zeichenfolgen und Zeichenfolgen-Arrays mit derselben Funktion
Da sowohlZeichenfolgen als auch Arrays das iterable Protocol implementieren, kann eine generische Funktion entworfen werden, um beide Eingaben auf die gleiche Weise zu behandeln. Dies ist besser, alsArray.prototype.values() direkt aufzurufen, was erfordert, dass die Eingabe ein Array oder zumindest ein Objekt mit einer solchen Methode ist.
function logIterable(it) { if (typeof it[Symbol.iterator] !== "function") { console.log(it, "is not iterable."); return; } for (const letter of it) { console.log(letter); }}// ArraylogIterable(["a", "b", "c"]);// a// b// c// StringlogIterable("abc");// a// b// c// NumberlogIterable(123);// 123 is not iterable.Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype-%symbol.iterator%> |