Signatur
Beschreibung
drop() gehört zu den Iterator-Helfern. Die Methode erzeugt einen neuen Iterator, der beim ersten Aufruf von next() die ersten limit Werte des Quell-Iterators verwirft und danach alle übrigen Werte unverändert weitergibt. Das Gegenstück ist take(), das nur die ersten n Elemente liefert.
Wie alle Iterator-Helfer arbeitet drop() verzögert (lazy): Beim Aufruf passiert noch nichts, der Quell-Iterator wird erst bei Bedarf weitergeschaltet. Deshalb funktioniert drop() auch mit unendlichen Iteratoren, etwa Generatoren, und braucht keinen Zwischenspeicher wie Array.prototype.slice().
Typische Einsatzfälle sind das Überspringen von Kopfzeilen beim zeilenweisen Verarbeiten, Paginierung über Generatoren (drop(offset).take(limit)) oder das Ignorieren der ersten Werte einer Folge. Da das Ergebnis selbst ein Iterator-Helfer ist, lässt es sich mit map(), filter(), take() oder toArray() verketten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $limit Pflicht | number | Anzahl der zu überspringenden Elemente am Anfang. Wird in eine Zahl umgewandelt und abgerundet; Infinity ist erlaubt (überspringt alles). Negative Werte oder NaN werfen einen RangeError. |
Rückgabewert
limit Elementen die restlichen Werte des Quell-Iterators liefert. Ist der Quell-Iterator vorher erschöpft, ist auch der neue Iterator sofort fertig.Beispiele
Die ersten Elemente eines Arrays überspringen
const zahlen = [10, 20, 30, 40, 50];
const rest = zahlen.values().drop(2).toArray();
console.log(rest);
Paginierung über einen unendlichen Generator
function* natuerlicheZahlen() {
let n = 1;
while (true) yield n++;
}
const seite = (nr, groesse) =>
natuerlicheZahlen()
.drop((nr - 1) * groesse)
.take(groesse)
.toArray();
console.log(seite(3, 5));
CSV-Kopfzeile überspringen und Zeilen verarbeiten
const csv = `name,alter
Anna,31
Ben,27
Clara,45`;
const personen = csv
.split('\n')
.values()
.drop(1) // Kopfzeile verwerfen
.map((zeile) => {
const [name, alter] = zeile.split(',');
return { name, alter: Number(alter) };
})
.filter((p) => p.alter > 30)
.toArray();
console.log(personen);
Ungültiges Limit abfangen
try {
[1, 2, 3].values().drop(-1);
} catch (err) {
console.log(err.name);
}
// Wichtig · Fallstricke
- Nur auf Iteratoren, nicht auf Arrays:
[1, 2, 3].drop(1)wirft einenTypeError. Zuerst mit.values()oderIterator.from()einen Iterator erzeugen. - Einmal verwendbar: Der zurückgegebene Iterator teilt sich den Zustand mit dem Quell-Iterator. Wer die Quelle parallel weiterschaltet, verändert auch das Ergebnis.
- Lazy: Das Überspringen findet erst beim ersten
next()statt, nicht schon beim Aufruf vondrop(). Seiteneffekte in Generatoren treten also erst dann auf. - Ein
RangeError(negativ oderNaN) wird sofort beim Aufruf vondrop()geworfen, nicht erst beim Durchlaufen. drop(Infinity)auf einem unendlichen Iterator endet nie.- Kompatibilität: Iterator-Helfer gibt es erst seit 2024/2025 (Chrome 122, Firefox 131, Safari 18.4, Node.js 22). Für ältere Umgebungen gibt es Polyfills, z. B.
core-js. Für asynchrone Iteratoren existiertdrop()noch nicht, das ist Teil eines eigenen Vorschlags (Async Iterator Helpers).