Baseline Widely available
O método find()
retorna o valor do primeiro elemento do array que satisfizer a função de teste provida. Caso contrario, undefined
é retornado.
const array1 = [5, 12, 8, 130, 44];
const found = array1.find((element) => element > 10);
console.log(found);
// Expected output: 12
Veja também o método findIndex()
, 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, use Array.prototype.indexOf()
ou Array.prototype.includes()
.
arr.find(callback(element[, index[, array]])[, thisArg])Parâmetros
callback
Função executada a cada iteração do array, recebendo três argumentos:
element
O elemento atual que está sendo processado no array.
index
Optional
O Ãndice do elemento atualmente sendo processado no array.
array
Optional
O array sobre o qual find
foi chamado.
thisArg
Optional
Opcional. Objeto usado como this
quando executando o callback
.
O valor do primeiro elemento do array que satisfaz a função de teste fornecida; caso contrário, undefined
.
O método find
executa a função callback
uma vez para cada elemento presente no array até que encontre um onde callback
retorne o valor true. Se o elemento é encontrado, find
retorna imediatamente o valor deste elemento. Caso contrário, find
retorna undefined
. O callback
é acionado para todos os Ãndices do array de 0
a tamanho-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.
O callback
é 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âmetro thisArg
é provido ao find
, ele será usado como o this
para cada acionamento do callback
. Se não for provido, então undefined
é usado.
O find
não altera a array à qual foi acionado.
O conjunto dos elementos processados por find
é definido antes do primeiro acionamento do callback
. Elementos que são anexados à array após o inÃcio da chamada ao find
não serão visitados pelo callback
. Se um elemento existente ainda não visitado da array for alterado pelo callback
, o valor passado ao callback
quando o visitar será o valor no momento que find
visita o Ãndice daquele elemento; elementos excluÃdos ainda são visitados.
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 retorna undefined
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 found
console.log([4, 5, 8, 12].find(isPrime)); // 5
Polyfill
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 o Array.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 Compatibilidade com navegadores Veja também
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4