Iterator.prototype.drop()
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 drop()
-Methode von Iterator
-Instanzen gibt ein neues Iterator-Helferobjekt zurück, das die angegebene Anzahl von Elementen am Anfang dieses Iterators überspringt.
Syntax
drop(limit)
Parameter
limit
-
Die Anzahl der Elemente, die vom Anfang der Iteration übersprungen werden sollen.
Rückgabewert
Ein neues Iterator-Helferobjekt. 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) geliefert. Der Iterator-Helfer liefert dann die verbleibenden Elemente nacheinander. Wenn der aktuelle Iterator weniger als limit
-Elemente hat, wird der neue Iterator-Helfer sofort abgeschlossen, wenn next()
das erste Mal aufgerufen wird.
Ausnahmen
RangeError
-
Wird ausgelöst, wenn
limit
beim Konvertieren zu einer GanzzahlNaN
oder negativ wird.
Beispiele
Verwendung von drop()
Das folgende Beispiel erstellt einen Iterator, der Terme in der Fibonacci-Sequenz liefert, beginnend mit dem 3. Term durch Überspringen der ersten beiden Terme:
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
Das entspricht:
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 erstellen. 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
Kombinieren 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 der Drop-Anzahl
Wenn limit
negativ oder NaN
ist, 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 Gesamtzahl der Elemente, die der Iterator erzeugen kann (wie z.B. Infinity
), wird der zurückgegebene Iterator-Helfer sofort alle Elemente überspringen und dann abgeschlossen, wenn next()
das erste Mal aufgerufen wird. Wenn der aktuelle Iterator unendlich ist, wird der zurückgegebene Iterator-Helfer niemals abgeschlossen.
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 |