[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex [Back]  [Original]

Array : mthode findIndex() - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

Array : mthode findIndex()

Baseline Large disponibilit

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 mthode findIndex() des instances de Array retourne l'indice du premier lment d'un tableau qui satisfait la fonction de test fournie. Si aucun lment ne satisfait la fonction de test, -1 est retourn.

Voir aussi la mthode find(), qui retourne le premier lment 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));
// Rsultat attendu : 3

Syntaxe

js
findIndex(callbackFn)
findIndex(callbackFn, thisArg)

Paramtres

callbackFn

Une fonction excuter pour chaque lment du tableau. Elle doit retourner une valeur vraie pour indiquer qu'un lment correspondant a t trouv, et une valeur fausse sinon. La fonction est appele avec les arguments suivants :

element

L'lment actuellement trait dans le tableau.

index

L'indice de l'lment actuellement trait dans le tableau.

array

Le tableau sur lequel la mthode findIndex() a t appele.

thisArg Facultatif

Une valeur utiliser comme this lors de l'excution de callbackFn. Voir mthodes itratives.

Valeur de retour

Un index d'un lment du tableau qui russit le test dcrit, -1 sinon.

Description

La mthode findIndex() est une mthode itrative. Elle appelle la fonction callbackFn fournie une fois pour chaque lment du tableau, dans l'ordre croissant des indices, jusqu' ce que callbackFn retourne une valeur vraie. findIndex() retourne alors l'indice de cet lment et arrte l'itration. Si callbackFn ne retourne jamais de valeur vraie, findIndex() retourne -1. Consultez la section mthodes itratives pour plus d'informations sur le fonctionnement gnral de ces mthodes.

callbackFn est appele pour chaque indice du tableau, pas seulement ceux qui ont une valeur assigne. Les cases vides dans les tableaux creux se comportent comme si leur valeur tait undefined.

La mthode findIndex() est gnrique. Elle attend seulement que la valeur de this possde une proprit length et des proprits cl entire.

Exemples

Trouver l'index d'un nombre premier dans un tableau

L'exemple suivant retourne l'indice du premier lment du tableau qui est un nombre premier, ou -1 s'il n'y en a pas.

js
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'implmentation de estPremier() est uniquement destine la dmonstration. Pour une utilisation relle, il est prfrable d'utiliser un algorithme fortement mmos, comme le crible d'ratosthne, afin d'viter des calculs rpts.

Utiliser le troisime argument de callbackFn

L'argument array est utile si vous souhaitez accder un autre lment du tableau, en particulier lorsque vous n'avez pas de variable existante qui fait rfrence au tableau. L'exemple suivant utilise d'abord filter() pour extraire les valeurs positives, puis findIndex() pour trouver le premier lment qui est infrieur ses voisins.

js
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'accder
    // au tableau intermdiaire 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); // 1

Utiliser findIndex() sur des tableaux creux

Vous pouvez rechercher undefined dans un tableau creux et obtenir l'indice d'une case vide.

js
console.log([1, , 3].findIndex((x) => x === undefined)); // 1

Appeler findIndex() sur des objets qui ne sont pas des tableaux

La mthode findIndex() lit la proprit length de this puis accde chaque proprit dont la cl est un entier non ngatif infrieur length.

js
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),
  ),
); // 1

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-array.prototype.findindex

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page