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 [Symbol.iterator]() Methode von Array Instanzen implementiert das iterable protocol und ermöglicht es Arrays, von den meisten Syntaxen, die Iterables erwarten, konsumiert zu werden, wie dem 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 Array.prototype.values Eigenschaft.

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 iterable-Iterator-Objekt, das den Wert jedes Indexes im Array liefert.

Beispiele

Iteration mit for...of Schleife

Es ist zu beachten, dass Sie diese Methode selten direkt aufrufen müssen. Das Vorhandensein der [Symbol.iterator]() Methode macht Arrays iterierbar, und iterierende Syntaxen wie die for...of Schleife rufen diese Methode automatisch auf, um den Iterator zu erhalten, über den gelaufen 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 den 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 Zeichenfolgen und Zeichenfolgen-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 verarbeitet. Dies ist besser als das direkte Aufrufen von Array.prototype.values(), das erfordert, dass die Eingabe ein Array oder zumindest ein Objekt mit einer solchen Methode ist.

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® 2026 Language Specification
# sec-array.prototype-%symbol.iterator%

Browser-Kompatibilität

Siehe auch