Baseline 2025
Newly available
Die Methode filter()
von Iterator
Instanzen gibt ein neues Iterator-Helferobjekt zurück, das nur die Elemente des Iterators liefert, für die die bereitgestellte Callback-Funktion true
zurückgibt.
callbackFn
Eine Funktion, die für jedes vom Iterator erzeugte Element ausgeführt wird. Sie sollte einen truthy Wert zurückgeben, damit das Element vom Iterator-Helfer angegeben wird, und einen falsy Wert sonst. Die Funktion wird mit den folgenden Argumenten aufgerufen:
element
Das aktuelle Element, das verarbeitet wird.
index
Der Index des aktuellen Elements, das verarbeitet wird.
Ein neues Iterator-Helferobjekt. Jedes Mal, wenn die next()
-Methode des Iterator-Helfers aufgerufen wird, gibt sie das nächste Element im Iterator zurück, für das die Callback-Funktion true
zurückgibt. Wenn der zugrunde liegende Iterator abgeschlossen ist, wird auch das Iterator-Helferobjekt abgeschlossen (die next()
-Methode erzeugt { value: undefined, done: true }
).
Der Hauptvorteil von Iterator-Helfern gegenüber Array-Methoden ist, dass sie "lazy" sind, was bedeutet, dass sie den nächsten Wert nur bei Bedarf erzeugen. Dies vermeidet unnötige Berechnungen und ermöglicht auch die Verwendung mit unendlichen Iteratoren.
Beispiele Verwendung von filter()Im folgenden Beispiel wird ein Iterator erstellt, der Terme der Fibonacci-Folge liefert, und liest dann die ersten wenigen Terme, die gerade sind:
function* fibonacci() {
let current = 1;
let next = 1;
while (true) {
yield current;
[current, next] = [next, current + next];
}
}
const seq = fibonacci().filter((x) => x % 2 === 0);
console.log(seq.next().value); // 2
console.log(seq.next().value); // 8
console.log(seq.next().value); // 34
Verwendung von filter() mit einer for...of Schleife
filter()
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().filter((x) => x % 2 === 0)) {
console.log(n);
if (n > 30) {
break;
}
}
// Logs:
// 2
// 8
// 34
Dies ist gleichbedeutend mit:
for (const n of fibonacci()) {
if (n % 2 !== 0) {
continue;
}
console.log(n);
if (n > 30) {
break;
}
}
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