Iterator : méthode find()
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 find() des instances de Iterator est similaire à Array.prototype.find() : elle retourne le premier élément produit par l'itérateur qui satisfait la fonction de test fournie. Si aucune valeur ne satisfait la fonction de test, undefined est retourné.
Syntaxe
find(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 indiquer qu'un élément correspondant a été trouvé, et une valeur équivalente à faux sinon. La fonction est appelée avec les arguments suivants :
Valeur de retour
Le premier élément produit par l'itérateur qui satisfait la fonction de test fournie. Sinon, undefined est retourné.
Description
find() parcourt l'itérateur et invoque la fonction callbackFn une fois pour chaque élément. Elle retourne immédiatement l'élément si la fonction de rappel retourne une valeur équivalente à vrai. Sinon, elle parcourt jusqu'à la fin de l'itérateur et retourne undefined. Si find() retourne un élément, l'itérateur sous-jacent est fermé en appelant sa méthode return().
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. Avec des itérateurs infinis, find() retourne le premier élément correspondant dès qu'il est trouvé. Si callbackFn retourne toujours une valeur équivalente à faux, la méthode ne retourne jamais.
Exemples
>Utiliser la méthode find()
function* fibonacci() {
let actuel = 1;
let suivant = 1;
while (true) {
yield actuel;
[actuel, suivant] = [suivant, actuel + suivant];
}
}
const estPair = (x) => x % 2 === 0;
console.log(fibonacci().find(estPair)); // 2
const estNegatif = (x) => x < 0;
console.log(fibonacci().take(10).find(estNegatif)); // undefined
console.log(fibonacci().find(estNegatif)); // Ne se termine jamais
Appeler find() ferme toujours l'itérateur sous-jacent, même si la méthode retourne prématurément. L'itérateur n'est jamais laissé dans un état intermédiaire.
const seq = fibonacci();
console.log(seq.find(estPair)); // 2
console.log(seq.next()); // { value: undefined, done: true }
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-iterator.prototype.find> |