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

Array : mthode find() - 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 find()

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 find() des instances de Array retourne le premier lment du tableau fourni qui satisfait la fonction de test donne. Si aucune valeur ne satisfait la fonction de test, undefined est retourn.

  • Si vous avez besoin de l'indice de l'lment trouv dans le tableau, utilisez findIndex().
  • Si vous souhaitez trouver l'indice d'une valeur, utilisez indexOf(). (C'est similaire findIndex(), mais chaque lment est compar la valeur pour l'galit, au lieu d'utiliser une fonction de test.)
  • Si vous souhaitez savoir si une valeur existe dans un tableau, utilisez includes(). L encore, chaque lment est compar la valeur pour l'galit, au lieu d'utiliser une fonction de test.
  • Si vous souhaitez savoir si au moins un lment satisfait la fonction de test, utilisez some().
  • Si vous souhaitez obtenir tous les lments qui satisfont la fonction de test, utilisez filter().

Dans cet article

Exemple interactif

const array = [5, 12, 8, 130, 44];

const found = array.find((element) => element > 10);

console.log(found);
// Rsultat attendu : 12

Syntaxe

js
find(callbackFn)
find(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 find() a t appele.

thisArg Facultatif

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

Valeur de retour

Le premier lment du tableau qui satisfait la fonction de test fournie. Sinon, undefined est retourn.

Description

La mthode find() 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. find() retourne alors cet lment et arrte l'itration. Si callbackFn ne retourne jamais de valeur vraie, find() retourne undefined. 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 find() est gnrique. Elle attend seulement que la valeur de this possde une proprit length et des proprits cl entire.

Exemples

Trouver un objet dans un tableau grce une de ses proprits

js
const inventaire = [
  { nom: "pommes", quantit: 2 },
  { nom: "bananes", quantit: 0 },
  { nom: "cerises", quantit: 5 },
];

function estCerises(fruit) {
  return fruit.nom === "cerises";
}

console.log(inventaire.find(estCerises));
// { nom: 'cerises', quantit: 5}

Utiliser les fonctions flches ES6/ES2015

js
const inventaire = [
  { nom: "pommes", quantit: 2 },
  { nom: "bananes", quantit: 0 },
  { nom: "cerises", quantit: 5 },
];

const resultat = inventaire.find((fruit) => fruit.nom === "cerises");
console.log(resultat);
// { nom: 'cerises', quantit: 5}

Trouver un nombre premier dans un tableau

L'exemple suivant retourne le premier lment du tableau qui est un nombre premier, ou undefined 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, 12].find(estPremier)); // undefined, rien trouv
console.log([4, 5, 8, 12].find(estPremier)); // 5

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 find() 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)
  .find((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 find() sur des tableaux creux

Les cases vides dans les tableaux creux sont parcourues et sont traites comme si leur valeur tait undefined.

js
// Dclare un tableau sans lments aux indices 2, 3 et 4
const array = [0, 1, , , , 5, 6];

// Affiche tous les indices, pas seulement ceux avec une valeur assigne
array.find((value, index) => {
  console.log("Indice visit", index, "avec la valeur", value);
  return false;
});
// Indice visit 0 avec la valeur 0
// Indice visit 1 avec la valeur 1
// Indice visit 2 avec la valeur undefined
// Indice visit 3 avec la valeur undefined
// Indice visit 4 avec la valeur undefined
// Indice visit 5 avec la valeur 5
// Indice visit 6 avec la valeur 6

// Affiche tous les indices, y compris ceux supprims
array.find((value, index) => {
  // Supprime l'lment 5 lors de la premire itration
  if (index === 0) {
    console.log("Suppression de array[5] avec la valeur", array[5]);
    delete array[5];
  }
  // L'lment 5 est tout de mme visit mme aprs suppression
  console.log("Indice visit", index, "avec la valeur", value);
  return false;
});
// Suppression de array[5] avec la valeur 5
// Indice visit 0 avec la valeur 0
// Indice visit 1 avec la valeur 1
// Indice visit 2 avec la valeur undefined
// Indice visit 3 avec la valeur undefined
// Indice visit 4 avec la valeur undefined
// Indice visit 5 avec la valeur undefined
// Indice visit 6 avec la valeur 6

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

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

js
const objetSimilaireTableau = {
  length: 3,
  "-1": 0.1, // ignor par find() car -1 < 0
  0: 2,
  1: 7.3,
  2: 4,
};
console.log(
  Array.prototype.find.call(objetSimilaireTableau, (x) => !Number.isInteger(x)),
);
// 7.3

Spcifications

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

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page