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 May 2018.

Die [Symbol.iterator]()-Methode von Array-Instanzen implementiert das iterable Protokoll und ermöglicht es Arrays, von den meisten Syntaxen, die Iterables erwarten, verwendet zu werden, wie z. B. der Spread-Syntax und for...of-Schleifen. Sie gibt ein Array-Iterator-Objekt zurück, das die Werte jedes Indexes im Array liefert.

Der anfängliche Wert dieser Eigenschaft ist dasselbe Funktionsobjekt wie der anfängliche Wert von Array.prototype.values.

Probieren Sie es aus

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

js
array[Symbol.iterator]()

Parameter

Keine.

Rückgabewert

Der gleiche Rückgabewert wie Array.prototype.values(): ein neues iterables Iterator-Objekt, das die Werte jedes Indexes im Array liefert.

Beispiele

Iteration mit der for...of-Schleife

Beachten Sie, dass Sie diese Methode selten direkt aufrufen müssen. Das Vorhandensein der [Symbol.iterator]()-Methode macht Arrays iterabel, und Iterations-Syntaxen wie die for...of-Schleife rufen diese Methode automatisch auf, um den Iterator zu erhalten, mit dem iteriert wird.

HTML

html
<ul id="letterResult"></ul>

JavaScript

js
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 die next()-Methode des zurückgegebenen Iterator-Objekts manuell aufrufen, um maximale Kontrolle über den Iterationsprozess zu haben.

js
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 entworfen werden, die beide Eingaben auf dieselbe Weise behandelt. Dies ist besser, als Array.prototype.values() direkt aufzurufen, was erfordert, dass die Eingabe ein Array ist oder mindestens ein Objekt mit einer solchen Methode.

js
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

Specification
ECMAScript® 2025 Language Specification
# sec-array.prototype-%symbol.iterator%

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
[Symbol.iterator]

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Uses a non-standard name.
Has more compatibility info.

Siehe auch