| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit September 2016 browserbergreifend verfgbar.
Die Methode [Symbol.iterator]() von Array Instanzen implementiert das iterable Protocol und ermglicht es Arrays, von den meisten Syntaxen konsumiert zu werden, die Iterables erwarten, wie zum Beispiel dem Spread-Syntax und for...of Schleifen. Sie gibt ein Array-Iterator-Objekt zurck, das den Wert jedes Indexes im Array liefert.
Der anfngliche Wert dieser Eigenschaft ist das gleiche Funktionsobjekt wie der anfngliche Wert der Eigenschaft Array.prototype.values.
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"
array[Symbol.iterator]()
Keine.
Der gleiche Rckgabewert wie Array.prototype.values(): ein neues iterables Iterator-Objekt, das den Wert jedes Indexes im Array liefert.
Beachten Sie, dass Sie diese Methode selten direkt aufrufen mssen. Die Existenz der [Symbol.iterator]() Methode macht Arrays iterable, und Iterations-Syntaxen wie die for...of Schleife rufen diese Methode automatisch auf, um den Iterator zu erhalten, ber den iteriert werden soll.
<ul id="letterResult"></ul>
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);
}
Sie knnen die next() Methode des zurckgegebenen 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); // a
console.log(arrIter.next().value); // b
console.log(arrIter.next().value); // c
console.log(arrIter.next().value); // d
console.log(arrIter.next().value); // e
Da sowohl Zeichenfolgen 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, als Array.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);
}
}
// Array
logIterable(["a", "b", "c"]);
// a
// b
// c
// String
logIterable("abc");
// a
// b
// c
// Number
logIterable(123);
// 123 is not iterable.
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-array.prototype-%symbol.iterator% |
Array.prototype[Symbol.iterator] in core-jsArrayArray.prototype.keys()Array.prototype.entries()Array.prototype.values()TypedArray.prototype[Symbol.iterator]()String.prototype[Symbol.iterator]()Symbol.iteratorArrayat()concat()copyWithin()entries()every()fill()filter()find()findIndex()findLast()findLastIndex()flat()flatMap()forEach()includes()indexOf()join()keys()lastIndexOf()map()pop()push()reduce()reduceRight()reverse()shift()slice()some()sort()splice()toLocaleString()toReversed()toSorted()toSpliced()toString()unshift()values()with()[Symbol.iterator]()Object/FunctionDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |