JavaScriptTableaux

Array.prototype.findIndex()

Renvoie l’indice du premier élément qui remplit la condition, ou -1.

Renvoie
L’indice du premier élément correspondant, ou -1.
Modifie l’original
Non
Sur cette page

Exemple

#
JavaScript
const lessons = ['Introduction', 'Balises', 'Attributs', 'Formulaires']

console.log(lessons.findIndex((lesson) => lesson.startsWith('A')))
console.log(lessons.findIndex((lesson) => lesson === 'Tableaux'))
Console
2
-1

Définition et utilisation

#

La méthode findIndex() fonctionne comme find(), mais renvoie l’indice de l’élément plutôt que l’élément lui-même. Si aucun élément ne correspond, le résultat est -1.

Elle est utile quand vous voulez modifier ou supprimer l’élément trouvé sur place, par exemple avec splice(), ou le remplacer par un nouvel objet.

Contrairement à indexOf(), elle accepte une fonction, et peut donc trouver des objets selon n’importe quel champ, pas seulement des valeurs comparées avec ===.

Syntaxe

#
Syntaxe
array.findIndex(callbackFn)
array.findIndex(callbackFn, thisArg)

Paramètres

#
  • callbackFn

    function (element, index, array)

    Fonction de test.
  • thisArg

    optionnel

    Valeur de this à l’intérieur de la fonction.

Plus d’exemples

#
Mettre à jour un élément du tableau
JavaScript
const todos = [
  { id: 1, done: false },
  { id: 2, done: false }
]

const index = todos.findIndex((todo) => todo.id === 2)
if (index !== -1) todos[index] = { ...todos[index], done: true }

console.log(todos)
Console
[{ id: 1, done: false }, { id: 2, done: true }]

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Vérifiez toujours si le résultat est -1 avant d’utiliser l’indice. todos[-1] renverra undefined, et une affectation créerait une propriété bizarre.
  • Pour des valeurs simples, indexOf() suffit.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.