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

View in English Always switch to English

Iterator.prototype.map()

Baseline 2025
Neu verfügbar

Seit März 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.

Die Methode map() von Iterator-Instanzen gibt ein neues Iterator-Hilfsobjekt zurück, das die Elemente des Iterators liefert, nachdem jedes durch eine Abbildungsfunktion transformiert wurde.

Syntax

js
map(callbackFn)

Parameter

callbackFn

Eine Funktion, die für jedes vom Iterator erzeugte Element ausgeführt wird. Ihr Rückgabewert wird vom Iterator-Hilfsobjekt geliefert. Die Funktion wird mit den folgenden Argumenten aufgerufen:

element

Das aktuelle Element, das verarbeitet wird.

index

Der Index des aktuellen Elements, das verarbeitet wird.

Rückgabewert

Ein neues Iterator-Hilfsobjekt. Jedes Mal, wenn die Methode next() des Iterator-Hilfsobjekts aufgerufen wird, holt sie das nächste Element aus dem zugrunde liegenden Iterator, wendet callbackFn darauf an und liefert den Rückgabewert. Wenn der zugrunde liegende Iterator abgeschlossen ist, ist auch das Iterator-Hilfsobjekt abgeschlossen (die Methode next() gibt { value: undefined, done: true } zurück).

Beschreibung

Der größte Vorteil von Iterator-Hilfsobjekten gegenüber Array-Methoden besteht darin, dass sie Werte erst bei Bedarf erzeugen. Sie erzeugen den nächsten Wert also nur, wenn er angefordert wird. Das vermeidet unnötige Berechnungen und ermöglicht auch ihre Verwendung mit unendlichen Iteratoren. Mit der Methode map() können Sie einen neuen Iterator erstellen, der bei der Iteration transformierte Elemente liefert.

Beispiele

map() verwenden

Das folgende Beispiel erstellt einen Iterator, der Glieder der Fibonacci-Folge liefert, transformiert ihn in eine neue Folge, in der jedes Glied quadriert ist, und liest anschließend die ersten Glieder aus:

js
function* fibonacci() {
  let current = 1;
  let next = 1;
  while (true) {
    yield current;
    [current, next] = [next, current + next];
  }
}

const seq = fibonacci().map((x) => x ** 2);
console.log(seq.next().value); // 1
console.log(seq.next().value); // 1
console.log(seq.next().value); // 4

map() mit einer for...of-Schleife verwenden

map() ist besonders praktisch, wenn Sie den Iterator nicht selbst implementieren. Da Iteratoren auch iterierbar sind, können Sie mit einer for...of-Schleife über das zurückgegebene Hilfsobjekt iterieren:

js
for (const n of fibonacci().map((x) => x ** 2)) {
  console.log(n);
  if (n > 30) {
    break;
  }
}

// Logs:
// 1
// 1
// 4
// 9
// 25
// 64

Dies ist gleichbedeutend mit:

js
for (const n of fibonacci()) {
  const n2 = n ** 2;
  console.log(n2);
  if (n2 > 30) {
    break;
  }
}

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-iterator.prototype.map

Browser-Kompatibilität

Siehe auch