[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator [Back]  [Original]

Array.prototype[Symbol.iterator]() - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

Array.prototype[Symbol.iterator]()

Baseline Weitgehend verfgbar

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.

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

js
array[Symbol.iterator]()

Parameter

Keine.

Rckgabewert

Der gleiche Rckgabewert wie Array.prototype.values(): ein neues iterables 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 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.

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 knnen die next() Methode des zurckgegebenen Iterator-Objekts dennoch manuell aufrufen, um die maximale Kontrolle ber den Iterationsprozess zu erhalten.

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

Handhabung von Zeichenfolgen und Zeichenfolgen-Arrays mit derselben Funktion

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.

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

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-array.prototype-%symbol.iterator%

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page