Iterator.prototype.includes()
Die Methode includes() von Iterator-Instanzen ähnelt Array.prototype.includes(): Sie gibt true zurück, wenn sie ein Element findet, das dem angegebenen Wert entspricht. Andernfalls gibt sie false zurück, wenn der Iterator erschöpft ist, ohne ein solches Element zu finden.
Syntax
includes(searchElement)
includes(searchElement, fromIndex)
Parameter
searchElement-
Der zu suchende Wert.
fromIndexOptional-
Der nullbasierte Index, an dem die Suche beginnen soll. Muss eine nicht negative ganze Zahl,
Infinityoderundefinedsein. WennfromIndexgrößer oder gleich der Anzahl der vom Iterator erzeugten Elemente ist (einschließlich des Falls, dassfromIndexInfinityist), gibt die Methode nach dem Erschöpfen des Iterators immerfalsezurück. WennfromIndexundefinedist, lautet der Standardwert0.
Rückgabewert
Ein boolescher Wert, der true ist, wenn der Wert searchElement innerhalb des Iterators gefunden wird (oder innerhalb des Teils des Iterators, der bei fromIndex beginnt, falls angegeben).
Ausnahmen
TypeError-
Wird ausgelöst, wenn
fromIndexkeines der folgenden Elemente ist: eine ganze Zahl,Infinity,-Infinityoderundefined. RangeError-
Wird ausgelöst, wenn
fromIndexnegativ ist.
Beschreibung
Die Methode includes() vergleicht searchElement mit Elementen des Arrays mithilfe des SameValueZero-Algorithmus. Dieser Algorithmus funktioniert wie strikte Gleichheit === (wobei -0 und +0 als gleich betrachtet werden), mit der Ausnahme, dass NaN als gleich zu sich selbst betrachtet wird.
Im Gegensatz zu Array.prototype.includes() darf der Parameter fromIndex von Iterator.prototype.includes() nicht negativ sein, da der Iterator keine bekannte Länge hat. Die Typvalidierung ist außerdem strenger: Nicht-ganzzahlige Werte werden nicht auf ganze Zahlen gekürzt.
Der Hauptvorteil von Iterator-Hilfsfunktionen gegenüber Array-Methoden besteht darin, dass sie lazy sind, was bedeutet, dass sie den nächsten Wert nur bei Bedarf erzeugen. Dadurch werden unnötige Berechnungen vermieden, und sie können auch mit unendlichen Iteratoren verwendet werden. Bei unendlichen Iteratoren gibt includes() true zurück, sobald die erste Übereinstimmung gefunden wird. Wenn der Wert nie gefunden wird, gibt die Methode niemals zurück.
Der Aufruf von includes() schließt stets den zugrunde liegenden Iterator, auch wenn die Methode frühzeitig zurückkehrt. Der Iterator wird niemals in einem halb abgeschlossenen Zustand belassen.
Beispiele
>includes() verwenden
function* fibonacci() {
let current = 1;
let next = 1;
while (true) {
yield current;
[current, next] = [next, current + next];
}
}
console.log(fibonacci().includes(8)); // true
console.log(fibonacci().take(10).includes(7)); // false
console.log(fibonacci().includes(7)); // Never completes
Die Methode schließt den Iterator nach der Rückgabe.
const seq = fibonacci();
console.log(seq.includes(8)); // true
console.log(seq.next()); // { value: undefined, done: true }
fromIndex verwenden
fromIndex gibt die Anzahl der Elemente an, die vom Anfang übersprungen werden sollen. Dies entspricht dem Aufruf von drop(fromIndex).includes(searchElement).
function* fibonacci() {
let current = 1;
let next = 1;
while (true) {
yield current;
[current, next] = [next, current + next];
}
}
console.log(fibonacci().includes(8, 3)); // true
console.log(fibonacci().includes(8, 10)); // false
Wenn fromIndex größer oder gleich der verfügbaren Elemente ist, wird false zurückgegeben.
["a", "b", "c"].values().includes("a", 3); // false
Spezifikationen
| Spezifikation |
|---|
| Iterator Includes> # sec-iterator.prototype.includes> |