Iterator : méthode filter()
Baseline
2025
Newly available
Depuis March 2025, cette fonctionnalité fonctionne sur les appareils et les versions de navigateur les plus récents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.
La méthode filter() des instances de Iterator retourne un nouvel objet d'aide à l'itérateur qui ne produit que les éléments de l'itérateur pour lesquels la fonction de rappel fournie retourne true.
Syntaxe
filter(callbackFn)
Paramètres
callbackFn-
Une fonction à exécuter pour chaque élément produit par l'itérateur. Elle doit retourner une valeur équivalente à vrai pour que l'élément soit produit par l'objet d'aide à l'itérateur, et une valeur équivalente à faux sinon. La fonction est appelée avec les arguments suivants :
Valeur de retour
Un nouvel objet d'aide à l'itérateur. À chaque appel de la méthode next() de l'objet d'aide, elle retourne l'élément suivant de l'itérateur pour lequel la fonction de rappel retourne true. Lorsque l'itérateur sous-jacent est terminé, l'objet d'aide à l'itérateur est également terminé (la méthode next() produit { value: undefined, done: true }).
Description
L'avantage principal des aides d'itérateur par rapport aux méthodes de tableau est qu'elles sont paresseuses, c'est-à-dire qu'elles ne produisent la valeur suivante que lorsqu'elle est demandée. Cela évite des calculs inutiles et permet également de les utiliser avec des itérateurs infinis.
Exemples
>Utiliser la méthode filter()
L'exemple suivant crée un itérateur qui produit les termes de la suite de Fibonacci, puis lit les premiers termes qui sont pairs :
function* fibonacci() {
let actuel = 1;
let suivant = 1;
while (true) {
yield actuel;
[actuel, suivant] = [suivant, actuel + suivant];
}
}
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
Utiliser filter() avec une boucle for...of
filter() est le plus pratique lorsque vous ne créez pas manuellement l'itérateur. Comme les itérateurs sont aussi itérables, vous pouvez parcourir l'aide retournée avec une boucle for...of :
for (const n of fibonacci().filter((x) => x % 2 === 0)) {
console.log(n);
if (n > 30) {
break;
}
}
// Affiche :
// 2
// 8
// 34
Ceci équivaut à :
for (const n of fibonacci()) {
if (n % 2 !== 0) {
continue;
}
console.log(n);
if (n > 30) {
break;
}
}
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-iterator.prototype.filter> |
Compatibilité des navigateurs
Voir aussi
- Prothèse d'émulation de
Iterator.prototype.filterdanscore-js(angl.) - Prothèse d'émulation es-shims de
Iterator.prototype.filter(angl.) - L'objet
Iterator - La méthode
Iterator.prototype.forEach() - La méthode
Iterator.prototype.every() - La méthode
Iterator.prototype.map() - La méthode
Iterator.prototype.some() - La méthode
Iterator.prototype.reduce() - La méthode
Array.prototype.filter()