Iterator.prototype.drop()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die drop()
-Methode von Iterator
-Instanzen gibt einen neuen Iterator-Helfer zurück, der die angegebene Anzahl von Elementen am Anfang dieses Iterators überspringt.
Syntax
drop(limit)
Parameter
limit
-
Die Anzahl der Elemente, die vom Beginn der Iteration übersprungen werden sollen.
Rückgabewert
Ein neuer Iterator-Helfer. Wenn die next()
-Methode des zurückgegebenen Iterator-Helfers das erste Mal aufgerufen wird, wird der aktuelle Iterator sofort um limit
Elemente weitergeschaltet, und dann wird das nächste Element (das limit+1
-te Element) zurückgegeben. Der Iterator-Helfer liefert dann die verbleibenden Elemente nacheinander. Wenn der aktuelle Iterator weniger als limit
Elemente hat, wird der neue Iterator-Helfer beim ersten Aufruf von next()
sofort abgeschlossen.
Ausnahmen
RangeError
-
Wird ausgelöst, wenn
limit
zuNaN
oder negativ wird, wenn es in eine ganze Zahl umgewandelt wird.
Beispiele
Verwendung von drop()
Das folgende Beispiel erstellt einen Iterator, der die Terme der Fibonacci-Folge liefert, beginnend mit dem 3. Term, indem die ersten beiden Terme übersprungen werden:
function* fibonacci() {
let current = 1;
let next = 1;
while (true) {
yield current;
[current, next] = [next, current + next];
}
}
const seq = fibonacci().drop(2);
console.log(seq.next().value); // 2
console.log(seq.next().value); // 3
Dies ist gleichbedeutend mit:
const seq = fibonacci();
seq.next();
seq.next();
Verwendung von drop() mit einer for...of Schleife
drop()
ist am praktischsten, wenn Sie den Iterator nicht manuell schreiben. Da Iteratoren auch iterierbar sind, können Sie den zurückgegebenen Helfer mit einer for...of
-Schleife durchlaufen:
for (const n of fibonacci().drop(2)) {
console.log(n);
if (n > 30) {
break;
}
}
// Logs:
// 2
// 3
// 5
// 8
// 13
// 21
// 34
Kombination von drop() mit take()
Sie können drop()
mit Iterator.prototype.take()
kombinieren, um einen Ausschnitt eines Iterators zu erhalten:
for (const n of fibonacci().drop(2).take(5)) {
// Drops the first two elements, then takes the next five
console.log(n);
}
// Logs:
// 2
// 3
// 5
// 8
// 13
for (const n of fibonacci().take(5).drop(2)) {
// Takes the first five elements, then drops the first two
console.log(n);
}
// Logs:
// 2
// 3
// 5
Untere und obere Grenzen des drop-Werts
Wenn limit
negativ ist oder NaN
, wird ein RangeError
ausgelöst:
fibonacci().drop(-1); // RangeError: -1 must be positive
fibonacci().drop(undefined); // RangeError: undefined must be positive
Wenn limit
größer ist als die Gesamtanzahl der Elemente, die der Iterator erzeugen kann (wie Infinity
), wird der zurückgegebene Iterator-Helfer sofort alle Elemente fallenlassen und beim ersten Aufruf von next()
abgeschlossen werden. Wenn der aktuelle Iterator unendlich ist, wird der zurückgegebene Iterator-Helfer niemals beendet.
fibonacci().drop(Infinity).next(); // Never ends
new Set([1, 2, 3]).values().drop(Infinity).next(); // { value: undefined, done: true }
new Set([1, 2, 3]).values().drop(4).next(); // { value: undefined, done: true }
Spezifikationen
Specification |
---|
Iterator Helpers # sec-iteratorprototype.drop |
Browser-Kompatibilität
BCD tables only load in the browser