Iterator.prototype.includes()
Die includes()-Methode von Iterator-Instanzen ist ähnlich wie Array.prototype.includes(): Sie gibt true zurück, wenn sie ein Element findet, das dem angegebenen Wert entspricht. Andernfalls, wenn der Iterator erschöpft ist, ohne ein solches Element zu finden, gibt sie false zurück.
Syntax
includes(searchElement)
includes(searchElement, fromIndex)
Parameter
searchElement-
Der Wert, nach dem gesucht werden soll.
fromIndexOptional-
Nullbasierter Index, ab 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 wennfromIndexInfinityist), gibt die Methode nach Erschöpfung des Iterators immerfalsezurück. WennfromIndexundefinedist, wird er standardmäßig auf0gesetzt.
Rückgabewert
Ein boolescher Wert, der true ist, wenn der Wert searchElement innerhalb des Iterators gefunden wird (oder im Teil des Iterators, der bei fromIndex beginnt, falls angegeben).
Ausnahmen
TypeError-
Wird ausgelöst, wenn
fromIndexnicht einer der folgenden ist: eine ganze Zahl,Infinity,-Infinityoderundefined. RangeError-
Wird ausgelöst, wenn
fromIndexnegativ ist.
Beschreibung
Die includes()-Methode vergleicht searchElement mit Elementen des Arrays unter Verwendung des SameValueZero-Algorithmus. Dieser Algorithmus funktioniert wie die strikte Gleichheit === (wobei -0 und +0 als gleich angesehen werden), mit der Ausnahme, dass NaN als gleich zu sich selbst betrachtet wird.
Im Gegensatz zu Array.prototype.includes() darf der fromIndex-Parameter von Iterator.prototype.includes() nicht negativ sein, da der Iterator keine bekannte Länge hat. Die Typüberprüfung ist ebenfalls strenger: Nicht-ganze Werte werden nicht auf ganze Zahlen reduziert.
Der Hauptvorteil von Iterator-Hilfsmethoden gegenüber Array-Methoden ist, dass sie faul sind, was bedeutet, dass sie den nächsten Wert nur dann erzeugen, wenn er angefordert wird. Dies vermeidet unnötige Berechnungen und ermöglicht auch ihre Nutzung mit unendlichen Iteratoren. Bei unendlichen Iteratoren gibt includes() true zurück, sobald das erste Übereinstimmung gefunden wird. Wenn der Wert niemals auftritt, gibt die Methode nie zurück.
Der Aufruf von includes() schließt immer den zugrunde liegenden Iterator, selbst wenn die Methode frühzeitig zurückkehrt. Der Iterator wird niemals in einem halbfertigen Zustand belassen.
Beispiele
>Verwendung von includes()
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 }
Verwendung von fromIndex
fromIndex gibt die Anzahl der vom Beginn an zu überspringenden Elemente an. Es ist äquivalent zum 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 den verfügbaren Elementen ist, wird false zurückgegeben.
["a", "b", "c"].values().includes("a", 3); // false