Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Iterator.prototype.take()
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.
Dietake() Methode vonIterator Instanzen gibt ein neuesIterator-Hilfsobjekt zurück, das die gegebene Anzahl von Elementen in diesem Iterator liefert und dann beendet.
In diesem Artikel
Syntax
take(limit)Parameter
limitDie Anzahl von Elementen, die vom Beginn der Iteration an übernommen werden sollen.
Rückgabewert
Ein neuesIterator-Hilfsobjekt. Der zurückgegebene Iteratoren-Helfer liefert die Elemente im ursprünglichen Iterator einzeln und endet dann (dienext() Methode erzeugt{ value: undefined, done: true }), nachdemlimit Elemente geliefert wurden oder wenn der ursprüngliche Iterator erschöpft ist, je nachdem, was zuerst eintritt.
Ausnahmen
RangeErrorWird ausgelöst, wenn
limitzuNaNoder negativ wird, wenn esin eine Ganzzahl konvertiert wird.
Beispiele
>Verwendung von take()
Das folgende Beispiel erstellt einen Iterator, der Begriffe in der Fibonacci-Sequenz liefert, und protokolliert dann die ersten drei Begriffe:
function* fibonacci() { let current = 1; let next = 1; while (true) { yield current; [current, next] = [next, current + next]; }}const seq = fibonacci().take(3);console.log(seq.next().value); // 1console.log(seq.next().value); // 1console.log(seq.next().value); // 2console.log(seq.next().value); // undefinedVerwendung von take() mit einer for...of Schleife
take() ist am bequemsten, wenn Sie den Iterator nicht manuell erstellen. Da Iteratoren auch iterierbar sind, können Sie den zurückgegebenen Helfer mit einerfor...of Schleife durchlaufen:
for (const n of fibonacci().take(5)) { console.log(n);}// Logs:// 1// 1// 2// 3// 5Dafibonacci() ein unendlicher Iterator ist, würde die Verwendung einerfor Schleife, um ihn zu durchlaufen, ohne eine Logik zum vorzeitigen Beenden (wie einebreak Anweisung), zu einer Endlosschleife führen.
Kombination von drop() mit take()
Sie könnentake() mitIterator.prototype.drop() 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// 13for (const n of fibonacci().take(5).drop(2)) { // Takes the first five elements, then drops the first two console.log(n);}// Logs:// 2// 3// 5Untere und obere Grenzen der Übernahmeanzahl
Wenn daslimit negativ oderNaN ist, wird einRangeError ausgelöst:
fibonacci().take(-1); // RangeError: -1 must be positivefibonacci().take(undefined); // RangeError: undefined must be positiveWenn daslimit größer ist als die Gesamtzahl der Elemente, die der Iterator erzeugen kann (wieInfinity), hat der zurückgegebene Iteratoren-Helfer im Wesentlichen dasselbe Verhalten wie der ursprüngliche Iterator:
for (const n of new Set([1, 2, 3]).values().take(Infinity)) { console.log(n);}// Logs:// 1// 2// 3Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-iterator.prototype.take> |