Baseline 2025
Newly available
Die take()
Methode von Iterator
Instanzen gibt ein neues Iterator-Hilfsobjekt zurück, das die gegebene Anzahl von Elementen in diesem Iterator liefert und dann beendet.
limit
Die Anzahl von Elementen, die vom Beginn der Iteration an übernommen werden sollen.
Ein neues Iterator-Hilfsobjekt. Der zurückgegebene Iteratoren-Helfer liefert die Elemente im ursprünglichen Iterator einzeln und endet dann (die next()
Methode erzeugt { value: undefined, done: true }
), nachdem limit
Elemente geliefert wurden oder wenn der ursprüngliche Iterator erschöpft ist, je nachdem, was zuerst eintritt.
RangeError
Wird ausgelöst, wenn limit
zu NaN
oder negativ wird, wenn es in eine Ganzzahl konvertiert wird.
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); // 1
console.log(seq.next().value); // 1
console.log(seq.next().value); // 2
console.log(seq.next().value); // undefined
Verwendung 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 einer for...of
Schleife durchlaufen:
for (const n of fibonacci().take(5)) {
console.log(n);
}
// Logs:
// 1
// 1
// 2
// 3
// 5
Da fibonacci()
ein unendlicher Iterator ist, würde die Verwendung einer for
Schleife, um ihn zu durchlaufen, ohne eine Logik zum vorzeitigen Beenden (wie eine break
Anweisung), zu einer Endlosschleife führen.
Sie können take()
mit Iterator.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
// 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 Ãbernahmeanzahl
Wenn das limit
negativ oder NaN
ist, wird ein RangeError
ausgelöst:
fibonacci().take(-1); // RangeError: -1 must be positive
fibonacci().take(undefined); // RangeError: undefined must be positive
Wenn das limit
gröÃer ist als die Gesamtzahl der Elemente, die der Iterator erzeugen kann (wie Infinity
), 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
// 3
Spezifikationen Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4