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

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

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 aot 2022.

La mthode findLast() des instances de Array parcourt le tableau en ordre inverse et retourne la valeur du premier lment qui satisfait la fonction de test fournie. Si aucun lment ne satisfait la fonction de test, undefined est retourn.

Si vous souhaitez :

  • le premier lment correspondant, utilisez find().
  • l'indice du dernier lment correspondant dans le tableau, utilisez findLastIndex().
  • l'indice d'une valeur, utilisez indexOf(). (Cette mthode est semblable findIndex(), mais compare chaque lment la valeur indique au lieu d'utiliser une fonction de test.)
  • savoir si une valeur existe dans un tableau, utilisez includes(). L encore, chaque lment est compar la valeur indique au lieu d'utiliser une fonction de test.
  • savoir si un lment satisfait la fonction de test fournie, utilisez some().

Dans cet article

Exemple interactif

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

const found = array.findLast((element) => element > 45);

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

Syntaxe

js
findLast(callbackFn)
findLast(callbackFn, thisArg)

Paramtres

callbackFn

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

element

La valeur de l'lment courant du tableau en cours de traitement.

index

L'indice de l'lment courant du tableau en cours de traitement.

array

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

thisArg Facultatif

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

Valeur de retour

Le dernier lment du tableau (celui avec l'indice le plus lev) qui satisfait la fonction de test fournie ; undefined si aucun lment correspondant n'est trouv.

Description

La mthode findLast() est une mthode itrative. Elle appelle la fonction fournie callbackFn une fois pour chaque lment d'un tableau dans l'ordre dcroissant des indices, jusqu' ce que callbackFn retourne une valeur vrai. findLast() retourne alors cet lment et arrte l'itration du tableau. Si callbackFn ne retourne jamais de valeur vrai, findLast() retourne undefined. Lisez 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 ayant une valeur affecte. Les emplacements vides des tableaux creux se comportent comme undefined.

La mthode findLast() est gnrique. Elle attend uniquement que la valeur this possde une proprit length et des proprits cls entires.

Exemples

Trouver le dernier objet d'un tableau dont la proprit correspond

Dans cet exemple, on illustre comment crer un test manipulant les proprits des lments du tableau.

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

// Renvoie true si le stock est faible
function pasSuffisant(item) {
  return item.quantite < 2;
}

console.log(inventaire.findLast(pasSuffisant));
// { nom: "poissons", quantite: 1 }

En utilisant les fonctions flches et la dcomposition

L'exemple prcdent peut tre crit l'aide d'une fonction flche et une dcomposition d'objet :

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

const resultat = inventaire.findLast(({ quantite }) => quantite < 2);

console.log(resultat);
// { nom: "poissons", quantite: 1 }

Trouver le dernier nombre premier d'un tableau

Dans l'exemple suivant, on trouve le dernier lment du tableau qui est un nombre premier (ou on retourne undefined si le tableau ne contient pas de nombre premier) :

js
function estPremier(n) {
  if (n < 2) {
    return false;
  }
  if (n % 2 === 0) {
    return n === 2;
  }
  for (let diviseur = 3; diviseur * diviseur <= n; diviseur += 2) {
    if (n % diviseur === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 12].findLast(estPremier)); // undefined, aucun trouv
console.log([4, 5, 7, 8, 9, 11, 12].findLast(estPremier)); // 11

Note : L'implmentation de estPremier() est uniquement des fins de dmonstration. Pour une application relle, il est prfrable d'utiliser un algorithme fortement mmos comme le crible d'ratosthne afin d'viter les calculs rpts.

Trouver la tche la plus rcemment termine

Cet exemple illustre un cas d'utilisation pratique de findLast() lorsqu'on travaille avec des donnes ordonnes par le temps. Il trouve la tche la plus rcemment termine dans une liste dj trie par timestamp.

js
const tasks = [
  {
    name: "Configuration du projet",
    completed: true,
    timestamp: 1609459200000,
  },
  { name: "crire des tests", completed: false, timestamp: 1609545600000 },
  { name: "Corriger le bug #42", completed: true, timestamp: 1609632000000 },
  {
    name: "Dployer en pr-production",
    completed: true,
    timestamp: 1609718400000,
  },
  { name: "Revoir la PR", completed: false, timestamp: 1609804800000 },
];

const lastCompletedTask = tasks.findLast((task) => task.completed);

console.log(lastCompletedTask.name); // Dployer en pr-production

Ceci est plus efficace que d'utiliser find() avec un tableau invers, car cela vite de crer un nouveau tableau.

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 utilise findLast() pour trouver le dernier lment qui est infrieur ses voisins.

js
const nombres = [3, -1, 1, 4, 1, 5, 9, 2, 6];
const dernierCreux = nombres
  .filter((num) => num > 0)
  .findLast((num, idx, arr) => {
    // Sans l'argument arr, il n'y a pas de 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(dernierCreux); // 2

Utiliser findLast() sur des tableaux creux

Les emplacements vides d'un tableau sont parcourus. Ils sont traits comme s'ils avaient la valeur undefined.

js
// On dclare un tableau sans lment pour les indices 2, 3, et 4
const tableau = [0, 1, , , , 5, 6];

// Le parcourt suivant montre tous les indices et pas uniquement
// ceux avec des valeurs affectes
tableau.findLast((valeur, index) => {
  console.log(`Parcours de l'index ${index} avec la valeur ${valeur}`);
});
// Parcours de l'index 6 avec la valeur 6
// Parcours de l'index 5 avec la valeur 5
// Parcours de l'index 4 avec la valeur undefined
// Parcours de l'index 3 avec la valeur undefined
// Parcours de l'index 2 avec la valeur undefined
// Parcours de l'index 1 avec la valeur 1
// Parcours de l'index 0 avec la valeur 0

// Tous les indices sont affichs, y compris ceux qui sont
// supprims
tableau.findLast((value, index) => {
  // On supprime l'lment 5  la premire itration
  if (index === 6) {
    console.log(`Suppression de array[5] avec la valeur ${tableau[5]}`);
    delete tableau[5];
  }
  // L'lment 5 est toujours parcouru, mme supprim
  console.log(`Parcours de l'index ${index} avec la valeur ${value}`);
});
// Suppression de array[5] avec la valeur 5
// Parcours de l'index 6 avec la valeur 6
// Parcours de l'index 5 avec la valeur undefined
// Parcours de l'index 4 avec la valeur undefined
// Parcours de l'index 3 avec la valeur undefined
// Parcours de l'index 2 avec la valeur undefined
// Parcours de l'index 1 avec la valeur 1
// Parcours de l'index 0 avec la valeur 0

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

La mthode findLast() lit la proprit length de this puis parcourt les proprits dont les cls sont des nombres entiers.

js
const semblableTableau = {
  length: 3,
  0: 2,
  1: 7.3,
  2: 4,
  3: 3, // ignor par findLast(), car length vaut 3
};
console.log(
  Array.prototype.findLast.call(semblableTableau, (x) => Number.isInteger(x)),
); // 4

Spcifications

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

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page