Iterator.prototype.some()
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 some() von Iterator-Instanzen ähnelt Array.prototype.some(): Sie gibt true zurück, wenn sie ein Element findet, das die angegebene Prüffunktion erfüllt. Wird der Iterator vollständig durchlaufen, ohne ein solches Element zu finden, gibt sie false zurück.
Syntax
some(callbackFn)
Parameter
callbackFn-
Eine Funktion, die für jedes vom Iterator erzeugte Element ausgeführt wird. Sie sollte einen Truthy-Wert zurückgeben, wenn das Element die Prüfung besteht, andernfalls einen Falsy-Wert. Die Funktion wird mit den folgenden Argumenten aufgerufen:
Rückgabewert
true, wenn die Callback-Funktion für mindestens ein Element einen Truthy-Wert zurückgibt. Andernfalls false.
Beschreibung
some() durchläuft den Iterator und ruft callbackFn einmal für jedes Element auf. Wenn die Callback-Funktion einen Truthy-Wert zurückgibt, gibt some() sofort true zurück. Andernfalls durchläuft die Methode den Iterator bis zum Ende und gibt false zurück. Wenn some() true zurückgibt, wird der zugrunde liegende Iterator durch Aufruf seiner Methode return() geschlossen.
Der wichtigste Vorteil von Iterator-Hilfsmethoden gegenüber Array-Methoden ist ihre verzögerte Auswertung: Sie erzeugen den nächsten Wert erst, wenn er angefordert wird. Das vermeidet unnötige Berechnungen und ermöglicht auch die Verwendung mit unendlichen Iteratoren. Bei unendlichen Iteratoren gibt some() true zurück, sobald das erste Element gefunden wird, für das callbackFn einen Truthy-Wert zurückgibt. Wenn callbackFn immer einen Falsy-Wert zurückgibt, kehrt die Methode nie zurück.
Ein Aufruf von some() schließt den zugrunde liegenden Iterator immer, auch wenn die Methode vorzeitig zurückkehrt. Der Iterator verbleibt nie in einem teilweise durchlaufenen Zustand.
Beispiele
>some() verwenden
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().some(isEven)); // true
const isNegative = (x) => x < 0;
console.log(fibonacci().take(10).some(isNegative)); // false
console.log(fibonacci().some(isNegative)); // Never completes
Die Methode schließt den Iterator, nachdem sie zurückgekehrt ist.
const seq = fibonacci();
console.log(seq.some(isEven)); // true
console.log(seq.next()); // { value: undefined, done: true }
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-iterator.prototype.some> |