--- title: Array.prototype.find() slug: Web/JavaScript/Reference/Objets_globaux/Array/find tags: - Array - ECMAScript 2015 - JavaScript - Méthode - Prototype - Reference - polyfill translation_of: Web/JavaScript/Reference/Global_Objects/Array/find ---
La méthode find()
renvoie la valeur du premier élément trouvé dans le tableau qui respecte la condition donnée par la fonction de test passée en argument. Sinon, la valeur {{jsxref("undefined")}} est renvoyée.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
Voir aussi la méthode {{jsxref("Array.findIndex", "findIndex()")}} qui renvoie l'index de l'élément trouvé et non sa valeur. Si on souhaite repérer la position d'un élément donné dans le tableau, on pourra utiliser {{jsxref("Array.prototype.indexOf()")}}. Si on souhaite déterminer si un tableau contient un élément donné, on pourra utiliser la méthode {{jsxref("Array.prototype.includes()")}}.
arr.find(callback(element[, index[, tableau]])[, thisArg])
callback
element
index
{{optional_inline}}array
{{optional_inline}}find
a été appelée.thisArg
{{optional_inline}}this
lorsque la fonction callback
est exécutée.La valeur du premier élément du tableau qui réussit le test, sinon {{jsxref("undefined")}}.
La méthode find
exécute la fonction callback
une fois pour chaque élément présent dans le tableau jusqu'à ce qu'elle retourne une valeur vraie (qui peut être convertie en true
). Si un élément est trouvé, find
retourne immédiatement la valeur de l'élément. Autrement, find
retourne undefined
. La méthode callback
est seulement appelée pour les index du tableau pour lesquels on dispose d'une valeur. Elle n'est pas appelée pour les index supprimés ou pour ceux qui n'ont pas de valeur.
La méthode callback
est appelée avec trois arguments : la valeur de l'élément, l'index de l'élément, et l'objet correspondant au tableau traversé.
Si le paramètre thisArg
est fourni à find
, il sera utilisé comme le this
pour chaque exécution de la fonction callback
. S'il n'est pas fourni, alors {{jsxref("undefined")}} sera utilisé.
find
ne modifie pas le tableau à partir duquel elle est appelée.
L'intervalle des éléments inspectés par find
est défini avant la première exécution de callback
. Les éléments ajoutés au tableau après l'appel à find
ne seront pas inspectés par la fonction callback
. Si un élément existant est modifié avant le passage du callback
, alors la valeur traitée par le callback
sera celle présente lors du passage de find
sur son index. Les éléments supprimés ne seront pas traités.
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}
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}
Dans l'exemple suivant, on cherche un nombre premier parmi les éléments d'un tableau (ou retourne undefined
s'il n'y en a pas ).
function estPremier(element, index, array) { let début = 2; while (début <= Math.sqrt(element)) { if (element % début ++ < 1) return false; } return (element > 1); } console.log( [4, 6, 8, 12].find(estPremier) ); // undefined, rien trouvé console.log( [4, 5, 8, 12].find(estPremier) ); // 5
Spécification | État | Commentaires |
---|---|---|
{{SpecName('ES2015', '#sec-array.prototype.find', 'Array.prototype.find')}} | {{Spec2('ES2015')}} | Définition initiale |
{{SpecName('ESDraft', '#sec-array.prototype.find', 'Array.prototype.find')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.Array.find")}}