Iterator.prototype.some()
Baseline 2025Newly available
Since March 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Die Methode some()
von Iterator
-Instanzen ähnelt Array.prototype.some()
: Sie prüft, ob mindestens ein vom Iterator erzeugtes Element den im bereitgestellten Funktionstest implementierten Test besteht. Sie gibt einen Booleschen Wert zurück.
Syntax
some(callbackFn)
Parameter
callbackFn
-
Eine Funktion, die für jedes Element, das vom Iterator produziert wird, ausgeführt wird. Sie sollte einen truthy Wert zurückgeben, um anzuzeigen, dass das Element den Test besteht, und einen falsy Wert, wenn nicht. 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()
iteriert den Iterator und ruft die Funktion callbackFn
einmal für jedes Element auf. Es gibt true
sofort zurück, wenn die Callback-Funktion einen truthy Wert zurückgibt. Andernfalls iteriert es bis zum Ende des Iterators und gibt false
zurück. Wenn some()
true
zurückgibt, wird der zugrunde liegende Iterator durch Aufruf seiner return()
-Methode geschlossen.
Der Hauptvorteil von Iterator-Hilfsfunktionen gegenüber Array-Methoden ist, dass sie faul sind. Das bedeutet, dass sie den nächsten Wert nur bei Anforderung erzeugen. Dies vermeidet unnötige Berechnungen und erlaubt auch die Verwendung mit unendlichen Iteratoren. Bei unendlichen Iteratoren gibt some()
true
zurück, sobald der erste truthy Wert gefunden wird. Wenn die callbackFn
immer einen falsy Wert zurückgibt, gibt die Methode nie zurück.
Beispiele
Verwendung von some()
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
Der Aufruf von some()
schließt immer den zugrunde liegenden Iterator, selbst wenn die Methode frühzeitig zurückkehrt. Der Iterator wird nie in einem halb fertigen Zustand belassen.
const seq = fibonacci();
console.log(seq.some(isEven)); // true
console.log(seq.next()); // { value: undefined, done: true }
Spezifikationen
Specification |
---|
Iterator Helpers # sec-iteratorprototype.some |