Iterator.prototype.drop()

Baseline 2025
Newly 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

js
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 Ganzzahl NaN 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:

js
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:

js
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:

js
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:

js
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:

js
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.

js
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

Siehe auch