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 findLast()
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 août 2022.
La méthodefindLast() des instances deArray parcourt le tableau en ordre inverse et retourne la valeur du premier élément qui satisfait la fonction de test fournie.Si aucun élément ne satisfait la fonction de test,undefined est retourné.
Si vous souhaitez :
- lepremier élément correspondant, utilisez
find(). - l'indice du dernier élément correspondant dans le tableau, utilisez
findLastIndex(). - l'indice d'une valeur, utilisez
indexOf().(Cette méthode est semblable àfindIndex(), mais compare chaque élément à la valeur indiquée au lieu d'utiliser une fonction de test.) - savoir si une valeurexiste dans un tableau, utilisez
includes().Là encore, chaque élément est comparé à la valeur indiquée au lieu d'utiliser une fonction de test. - savoir si un élément 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);// Résultat attendu : 130Syntaxe
findLast(callbackFn)findLast(callbackFn, thisArg)Paramètres
callbackFnLa fonction à exécuter pour chaque élément du tableau. Elle doit renvoyer une valeuréquivalente à
truepour indiquer qu'un élément correspondant a été trouvé, et une valeuréquivalente àfalsesinon. La fonction est appelée avec les arguments suivants :thisArgFacultatifLa valeur à utiliser comme
thislors de l'exécution decallbackFn. Voirles méthodes itératives.
Valeur de retour
Le dernier élément du tableau (celui avec l'indice le plus élevé) qui satisfait la fonction de test fournie ;undefined si aucun élément correspondant n'est trouvé.
Description
La méthodefindLast() est uneméthode itérative. Elle appelle la fonction fourniecallbackFn une fois pour chaque élément d'un tableau dans l'ordre décroissant des indices, jusqu'à ce quecallbackFn retourne une valeurvrai.findLast() retourne alors cet élément et arrête l'itération du tableau. SicallbackFn ne retourne jamais de valeur vrai,findLast() retourneundefined. Lisez la sectionméthodes itératives pour plus d'informations sur le fonctionnement général de ces méthodes.
callbackFn est appelée pourchaque indice du tableau, pas seulement ceux ayant une valeur affectée. Les emplacements vides destableaux creux se comportent commeundefined.
La méthodefindLast() estgénérique. Elle attend uniquement que la valeurthis possède une propriétélength et des propriétés à clés entières.
Exemples
>Trouver le dernier objet d'un tableau dont la propriété correspond
Dans cet exemple, on illustre comment créer un test manipulant les propriétés des éléments du tableau.
const inventaire = [ { nom: "pommes", quantite: 2 }, { nom: "bananes", quantite: 0 }, { nom: "poissons", quantite: 1 }, { nom: "cerises", quantite: 5 },];// Renvoie true si le stock est faiblefunction pasSuffisant(item) { return item.quantite < 2;}console.log(inventaire.findLast(pasSuffisant));// { nom: "poissons", quantite: 1 }En utilisant les fonctions fléchées et la décomposition
L'exemple précédent peut être écrit à l'aide d'une fonction fléchée etune décomposition d'objet :
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);// { name: "poissons", quantite: 1 }Trouver le dernier nombre premier d'un tableau
Dans l'exemple suivant, on trouve le dernier élément du tableau qui est un nombre premier (ou on renvoieundefined si le tableau ne contient pas de nombre premier) :
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)); // 11Note :L'implémentation deestPremier() est uniquement à des fins de démonstration. Pour une application réelle, il est préférable d'utiliser un algorithme fortement mémoïsé comme lecrible d'Ératosthène afin d'éviter les 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 puis utilisefindLast() pour trouver le dernier élément qui est inférieur à ses voisins.
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'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(dernierCreux); // 2UtiliserfindLast() sur des tableaux creux
Les emplacements vides d'un tableausont parcourus. Ils sont traités comme s'ils avaient la valeurundefined.
// On déclare un tableau sans élément pour les indices 2, 3, et 4const tableau = [0, 1, , , , 5, 6];// Le parcourt suivant montre tous les indices et pas uniquement// ceux avec des valeurs affectéestableau.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 affichés, y compris ceux qui sont// suppriméstableau.findLast((value, index) => { // On supprime l'élément 5 à la première itération if (index === 6) { console.log(`Suppression de array[5] avec la valeur ${tableau[5]}`); delete tableau[5]; } // L'élément 5 est toujours parcouru, même 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 0AppelerfindLast() sur des objets qui ne sont pas des tableaux
La méthodefindLast() lit la propriétélength dethis puis parcourt les propriétés dont les clés sont des nombres entiers.
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)),); // 4Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.findlast> |
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.findIndex() - La méthode
Array.prototype.findLastIndex() - La méthode
Array.prototype.includes() - La méthode
Array.prototype.filter() - La méthode
Array.prototype.every() - La méthode
Array.prototype.some() - La méthode
TypedArray.prototype.findLast() - Prothèse d'émulation pour Array.prototype.findLast dans la bibliothèque core-js(angl.)
- Prothèse d'émulation es-shims pour Array.prototype.findLast(angl.)