Baseline Widely available
Die Methode [Symbol.iterator]()
von Array
-Instanzen implementiert das iterable Protokoll und ermöglicht es, Arrays durch die meisten Syntaxen zu nutzen, die Iterables erwarten, wie etwa die Spread-Syntax und for...of
-Schleifen. Sie gibt ein Array-Iterator-Objekt zurück, das den Wert jedes Indexes im Array liefert.
Der Anfangswert dieser Eigenschaft ist dasselbe Funktionsobjekt wie der Anfangswert der Eigenschaft Array.prototype.values
.
const array1 = ["a", "b", "c"];
const iterator1 = array1[Symbol.iterator]();
for (const value of iterator1) {
console.log(value);
}
// Expected output: "a"
// Expected output: "b"
// Expected output: "c"
Syntax Parameter
Keine.
RückgabewertDer gleiche Rückgabewert wie Array.prototype.values()
: ein neues iterierbares Iterator-Objekt, das den Wert jedes Indexes im Array liefert.
Beachten Sie, dass Sie diese Methode selten direkt aufrufen müssen. Die Existenz der [Symbol.iterator]()
-Methode macht Arrays iterierbar, und iterierende Syntaxen wie die for...of
-Schleife rufen diese Methode automatisch auf, um den Iterator zum Durchlaufen zu erhalten.
<ul id="letterResult"></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 Manueller Aufbau des Iterators
Sie können dennoch die next()
-Methode des zurückgegebenen Iterator-Objekts manuell aufrufen, um 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
Umgang mit Strings und String-Arrays mit derselben Funktion
Da sowohl Strings als auch Arrays das iterable Protokoll implementieren, kann eine generische Funktion gestaltet 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 ist oder zumindest ein Objekt mit einer solchen Methode.
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.
Spezifikationen Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4