Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Iterator.prototype.drop()

Baseline 2025
Neu verfügbar

Seit März 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.

Die Methode drop() von Iterator-Instanzen gibt ein neues Iterator-Hilfsobjekt zurück, das die angegebene Anzahl von Elementen am Anfang dieses Iterators überspringt.

Syntax

js
drop(limit)

Parameter

limit

Die Anzahl der Elemente, die am Anfang der Iteration übersprungen werden sollen.

Rückgabewert

Ein neues Iterator-Hilfsobjekt. Beim ersten Aufruf der Methode next() des zurückgegebenen Iterator-Hilfsobjekts wird der aktuelle Iterator sofort um limit Elemente vorgerückt. Anschließend wird das nächste Element (das Element an Position limit+1) zurückgegeben. Danach gibt das Iterator-Hilfsobjekt die übrigen Elemente einzeln zurück. Hat der aktuelle Iterator weniger als limit Elemente, ist das neue Iterator-Hilfsobjekt bereits beim ersten Aufruf von next() abgeschlossen.

Ausnahmen

RangeError

Wird ausgelöst, wenn limit bei der Umwandlung in eine Ganzzahl zu NaN wird oder negativ ist.

Beispiele

drop() verwenden

Das folgende Beispiel erstellt einen Iterator, der Glieder der Fibonacci-Folge ausgibt. Durch das Überspringen der ersten beiden Glieder beginnt er beim dritten Glied:

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

Dies entspricht:

js
const seq = fibonacci();
seq.next();
seq.next();

drop() mit einer for...of-Schleife verwenden

drop() ist besonders praktisch, wenn Sie den Iterator nicht selbst implementieren. Da Iteratoren auch iterierbar sind, können Sie das zurückgegebene Hilfsobjekt 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

drop() mit take() kombinieren

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 für die Anzahl übersprungener Elemente

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 liefern kann (beispielsweise Infinity), überspringt das zurückgegebene Iterator-Hilfsobjekt sofort alle Elemente und ist beim ersten Aufruf von next() abgeschlossen. Ist der aktuelle Iterator unendlich, wird das zurückgegebene Iterator-Hilfsobjekt nie 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

Spezifikation
ECMAScript® 2027 Language Specification
# sec-iterator.prototype.drop

Browser-Kompatibilität

Siehe auch