Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Array : méthode findIndex()
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2015.
La méthodefindIndex() des instances deArray retourne l'indice du premier élément d'un tableau qui satisfait la fonction de test fournie.Si aucun élément ne satisfait la fonction de test, -1 est retourné.
Voir aussi la méthodefind(), qui retourne le premier élément qui satisfait la fonction de test (et non son indice).
Dans cet article
Exemple interactif
const array = [5, 12, 8, 130, 44];const isLargeNumber = (element) => element > 13;console.log(array.findIndex(isLargeNumber));// Résultat attendu : 3Syntaxe
findIndex(callbackFn)findIndex(callbackFn, thisArg)Paramètres
callbackFnUne fonction à exécuter pour chaque élément du tableau. Elle doit retourner une valeurvraie pour indiquer qu'un élément correspondant a été trouvé, et une valeurfausse sinon. La fonction est appelée avec les arguments suivants :
thisArgFacultatifUne valeur à utiliser comme
thislors de l'exécution decallbackFn. Voirméthodes itératives.
Valeur de retour
Un index d'un élément du tableau qui réussit le test décrit,-1 sinon.
Description
La méthodefindIndex() est uneméthode itérative. Elle appelle la fonctioncallbackFn fournie une fois pour chaque élément du tableau, dans l'ordre croissant des indices, jusqu'à ce quecallbackFn retourne unevaleur vraie.findIndex() retourne alors l'indice de cet élément et arrête l'itération. SicallbackFn ne retourne jamais de valeur vraie,findIndex() retourne-1. Consultez la sectionméthodes itératives pour plus d'informations sur le fonctionnement général de ces méthodes.
callbackFn est appelée pour chaque indice du tableau, pas seulement ceux qui ont une valeur assignée. Les cases vides dans lestableaux creux se comportent comme si leur valeur étaitundefined.
La méthodefindIndex() estgénérique. Elle attend seulement que la valeur dethis possède une propriétélength et des propriétés à clé entière.
Exemples
>Trouver l'index d'un nombre premier dans un tableau
L'exemple suivant retourne l'indice du premier élément du tableau qui est un nombre premier, ou-1 s'il n'y en a pas.
function estPremier(n) { if (n < 2) { return false; } if (n % 2 === 0) { return n === 2; } for (let facteur = 3; facteur * facteur <= n; facteur += 2) { if (n % facteur === 0) { return false; } } return true;}console.log([4, 6, 8, 9, 12].findIndex(estPremier)); // -1, aucun trouvéconsole.log([4, 6, 7, 9, 12].findIndex(estPremier)); // 2 (array[2] vaut 7)Note :L'implémentation deestPremier() est uniquement destinée à la démonstration. Pour une utilisation réelle, il est préférable d'utiliser un algorithme fortement mémoïsé, comme lecrible d'Ératosthène, afin d'éviter des calculs répétés.
Utiliser le troisième argument decallbackFn
L'argumentarray est utile si vous souhaitez accéder à un autre élément du tableau, en particulier lorsque vous n'avez pas de variable existante qui fait référence au tableau. L'exemple suivant utilise d'abordfilter() pour extraire les valeurs positives, puisfindIndex() pour trouver le premier élément qui est inférieur à ses voisins.
const nombres = [3, -1, 1, 4, 1, 5, 9, 2, 6];const premierCreux = nombres .filter((num) => num > 0) .findIndex((num, idx, arr) => { // Sans l'argument arr, il n'y a aucun moyen simple d'accéder // au tableau intermédiaire sans le stocker dans une variable. if (idx > 0 && num >= arr[idx - 1]) return false; if (idx < arr.length - 1 && num >= arr[idx + 1]) return false; return true; });console.log(premierCreux); // 1UtiliserfindIndex() sur des tableaux creux
Vous pouvez rechercherundefined dans un tableau creux et obtenir l'indice d'une case vide.
console.log([1, , 3].findIndex((x) => x === undefined)); // 1AppelerfindIndex() sur des objets qui ne sont pas des tableaux
La méthodefindIndex() lit la propriétélength dethis puis accède à chaque propriété dont la clé est un entier non négatif inférieur àlength.
const objetSimilaireTableauemblantTableau = { length: 3, "-1": 0.1, // ignoré par findIndex() car -1 < 0 0: 2, 1: 7.3, 2: 4,};console.log( Array.prototype.findIndex.call( objetSimilaireTableauemblantTableau, (x) => !Number.isInteger(x), ),); // 1Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.findindex> |
Compatibilité des navigateurs
Voir aussi
- Guide des collections indexées
- L'objet global
Array - La méthode
Array.prototype.find() - La méthode
Array.prototype.findLast() - La méthode
Array.prototype.findLastIndex() - La méthode
Array.prototype.indexOf() - La méthode
Array.prototype.lastIndexOf() - La méthode
TypedArray.prototype.findIndex() - Prothèse d'émulation core-js pour
Array.prototype.findIndex(angl.) - Prothèse d'émulation es-shims pour
Array.prototype.findIndex(angl.)