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.find()

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 find() von Iterator-Instanzen ähnelt Array.prototype.find(): Sie gibt das erste vom Iterator erzeugte Element zurück, das die angegebene Prüffunktion erfüllt. Wenn kein Wert die Prüffunktion erfüllt, wird undefined zurückgegeben.

Syntax

js
find(callbackFn)

Parameter

callbackFn

Eine Funktion, die für jedes vom Iterator erzeugte Element ausgeführt wird. Sie sollte einen truthy-Wert zurückgeben, wenn ein passendes Element gefunden wurde, andernfalls einen falsy-Wert. Die Funktion wird mit den folgenden Argumenten aufgerufen:

element

Das aktuell verarbeitete Element.

index

Der Index des aktuell verarbeiteten Elements.

Rückgabewert

Das erste vom Iterator erzeugte Element, das die angegebene Prüffunktion erfüllt. Andernfalls wird undefined zurückgegeben.

Beschreibung

find() durchläuft den Iterator und ruft die Funktion callbackFn einmal für jedes Element auf. Wenn die Callback-Funktion einen truthy-Wert zurückgibt, gibt find() das Element sofort zurück. Andernfalls durchläuft die Methode den Iterator bis zum Ende und gibt undefined zurück. Wenn find() ein Element zurückgibt, wird der zugrunde liegende Iterator durch Aufruf seiner Methode return() geschlossen.

Der Hauptvorteil von Iterator-Hilfsmethoden gegenüber Array-Methoden besteht darin, dass sie Werte erst bei Bedarf erzeugen: Der nächste Wert wird nur erzeugt, wenn er angefordert wird. Das vermeidet unnötige Berechnungen und ermöglicht ihre Verwendung mit unendlichen Iteratoren. Bei unendlichen Iteratoren gibt find() das erste passende Element zurück, sobald es gefunden wird. Wenn callbackFn immer einen falsy-Wert zurückgibt, kehrt die Methode nie zurück.

Ein Aufruf von find() schließt den zugrunde liegenden Iterator immer, auch wenn die Methode vorzeitig zurückkehrt. Der Iterator verbleibt nie in einem teilweise durchlaufenen Zustand.

Beispiele

find() verwenden

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

const isEven = (x) => x % 2 === 0;
console.log(fibonacci().find(isEven)); // 2

const isNegative = (x) => x < 0;
console.log(fibonacci().take(10).find(isNegative)); // undefined
console.log(fibonacci().find(isNegative)); // Never completes

Die Methode schließt den Iterator, nachdem sie einen Wert zurückgegeben hat.

js
const seq = fibonacci();
console.log(seq.find(isEven)); // 2
console.log(seq.next()); // { value: undefined, done: true }

Spezifikationen

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

Browser-Kompatibilität

Siehe auch