Iterator.prototype.includes()
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Die includes()-Methode 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 durchlaufen wurde, ohne ein solches Element zu finden.
Syntax
includes(searchElement)
includes(searchElement, fromIndex)
Parameter
searchElement-
Der Wert, nach dem gesucht werden soll.
fromIndexOptional-
Der nullbasierte Index, ab dem gesucht werden soll. Muss eine nicht negative Ganzzahl,
Infinityoderundefinedsein. WennfromIndexgrößer oder gleich der Anzahl der vom Iterator erzeugten Elemente ist (auch wennfromIndexgleichInfinityist), gibt die Methode nach dem vollständigen Durchlaufen des Iterators immerfalsezurück. WennfromIndexgleichundefinedist, wird standardmäßig0verwendet.
Rückgabewert
Ein boolescher Wert, der true ist, wenn der Wert searchElement im Iterator gefunden wird (oder, falls angegeben, in dem bei fromIndex beginnenden Teil des Iterators).
Ausnahmen
TypeError-
Wird ausgelöst, wenn
fromIndexweder eine Ganzzahl nochInfinity,-Infinityoderundefinedist. RangeError-
Wird ausgelöst, wenn
fromIndexnegativ ist.
Beschreibung
Die includes()-Methode vergleicht searchElement mit den Elementen des Iterators mithilfe des SameValueZero-Algorithmus. Dieser Algorithmus funktioniert wie die strikte Gleichheit === (bei der -0 und +0 als gleich gelten), mit der Ausnahme, dass NaN als gleich zu sich selbst gilt.
Anders als bei Array.prototype.includes() darf der Parameter fromIndex bei Iterator.prototype.includes() nicht negativ sein, da die Länge des Iterators nicht bekannt ist. Auch die Typprüfung ist strenger: Werte, die keine Ganzzahlen sind, werden nicht auf Ganzzahlen gekürzt.
Der Hauptvorteil von Iterator-Hilfsmethoden gegenüber Array-Methoden besteht darin, dass sie Werte erst 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 vorkommt, kehrt die Methode nie zurück.
Ein Aufruf von includes() schließt den zugrunde liegenden Iterator immer, auch wenn die Methode vorzeitig zurückkehrt. Der Iterator bleibt nie in einem nur teilweise durchlaufenen Zustand zurück.
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, bevor sie zurückkehrt.
const seq = fibonacci();
console.log(seq.includes(8)); // true
console.log(seq.next()); // { value: undefined, done: true }
fromIndex verwenden
fromIndex gibt an, wie viele Elemente am 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 Anzahl 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> |