Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
Array.prototype.find()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since setembro de 2015.
O métodofind() retorna ovalor doprimeiro elemento do array que satisfizer a função de teste provida. Caso contrario,undefined é retornado.
In this article
Experimente
const array1 = [5, 12, 8, 130, 44];const found = array1.find((element) => element > 10);console.log(found);// Expected output: 12Veja também o métodofindIndex(), que retorna oíndice do elemento encontrado no array ao invés do seu valor.
Se você precisa encontrar a posição de um elemento ou se um elemento existe em um array, useArray.prototype.indexOf() ouArray.prototype.includes().
Sintaxe
arr.find(callback(element[, index[, array]])[, thisArg])
Parâmetros
callbackFunção executada a cada iteração do array, recebendo três argumentos:
elementO elemento atual que está sendo processado no array.
indexOptionalO índice do elemento atualmente sendo processado no array.
arrayOptionalO array sobre o qual
findfoi chamado.
thisArgOptionalOpcional. Objeto usado como
thisquando executando ocallback.
Valor retornado
Ovalor doprimeiro elemento do array que satisfaz a função de teste fornecida; caso contrário,undefined.
Descrição
O métodofind executa a funçãocallback uma vez para cada elemento presente no array até que encontre um ondecallback retorne o valor true. Se o elemento é encontrado,find retorna imediatamente o valor deste elemento. Caso contrário,find retornaundefined. Ocallback é acionado para todos os índices do array de0 atamanho-1, não apenas para aqueles que possuem valores atribuídos. Sendo assim, ele pode ser menos eficiente para arrays muito grandes em que existem outros métodos que só visitam os índices que tenham valor atribuído.
Ocallback é acionado com três argumentos: o valor do elemento, o índice do elemento e o objeto do Array que está sendo executado.
Se um parâmetrothisArg é provido aofind, ele será usado como othis para cada acionamento docallback. Se não for provido, entãoundefined é usado.
Ofind não altera a array à qual foi acionado.
O conjunto dos elementos processados porfind é definido antes do primeiro acionamento docallback. Elementos que são anexados à array após o início da chamada aofind não serão visitados pelocallback. Se um elemento existente ainda não visitado da array for alterado pelocallback, o valor passado aocallback quando o visitar será o valor no momento quefind visita o índice daquele elemento; elementos excluídos ainda são visitados.
Exemplos
>Encontrar um objeto em um array por uma de suas propriedades
const inventory = [ { name: "apples", quantity: 2 }, { name: "bananas", quantity: 0 }, { name: "cerejas", quantity: 5 },];function isCherries(fruit) { return fruit.name === "cerejas";}console.log(inventory.find(isCherries));// { name: 'cerejas', quantity: 5 }Utilizando arrow function
const inventory = [ { name: "maças", quantity: 2 }, { name: "bananas", quantity: 0 }, { name: "cherries", quantity: 5 },];const result = inventory.find((fruit) => fruit.name === "cherries");console.log(result); // { name: 'cherries', quantity: 5 }Encontrar um número primo em um array
O exemplo a seguir encontra um elemento dentro da array que é número primo (ou retornaundefined se não houverem números primos).
function isPrime(element, index, array) { var start = 2; while (start <= Math.sqrt(element)) { if (element % start++ < 1) { return false; } } return element > 1;}console.log([4, 6, 8, 12].find(isPrime)); // undefined, not foundconsole.log([4, 5, 8, 12].find(isPrime)); // 5Polyfill
Este método foi adicionado à especificação do ECMAScript 2015 e pode não estar disponível em todas as implementações do JavaScript. Entretanto, você pode fazer um polyfill para oArray.prototype.find com o trecho de código abaixo:
if (!Array.prototype.find) { Array.prototype.find = function (predicate) { if (this === null) { throw new TypeError("Array.prototype.find called on null or undefined"); } if (typeof predicate !== "function") { throw new TypeError("predicate must be a function"); } var list = Object(this); var length = list.length >>> 0; var thisArg = arguments[1]; var value; for (var i = 0; i < length; i++) { value = list[i]; if (predicate.call(thisArg, value, i, list)) { return value; } } return undefined; };}Especificações
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.find> |