[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/find [Back]  [Original]

Array.prototype.find() - JavaScript | MDN

Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.

View in English Always switch to English

Array.prototype.find()

Baseline Widely available

This feature is well established and works across many devices and browser versions. Its been available across browsers since setembro de 2015.

O mtodo find() retorna o valor do primeiro elemento do array que satisfizer a funo 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: 12

Veja tambm o mtodo findIndex(), que retorna o ndice do elemento encontrado no array ao invs do seu valor.

Se voc precisa encontrar a posio de um elemento ou se um elemento existe em um array, use Array.prototype.indexOf() ou Array.prototype.includes().

Sintaxe

arr.find(callback(element[, index[, array]])[, thisArg])

Parmetros

callback

Funo executada a cada iterao do array, recebendo trs argumentos:

element

O elemento atual que est sendo processado no array.

indexOptional

O ndice do elemento atualmente sendo processado no array.

arrayOptional

O array sobre o qual find foi chamado.

thisArgOptional

Opcional. Objeto usado como this quando executando o callback.

Valor retornado

O valor do primeiro elemento do array que satisfaz a funo de teste fornecida; caso contrrio, undefined.

Descrio

O mtodo find executa a funo 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 contrrio, find retorna undefined. O callback acionado para todos os ndices do array de 0 a tamanho-1, no apenas para aqueles que possuem valores atribudos. Sendo assim, ele pode ser menos eficiente para arrays muito grandes em que existem outros mtodos que s visitam os ndices que tenham valor atribudo.

O callback acionado com trs argumentos: o valor do elemento, o ndice do elemento e o objeto do Array que est sendo executado.

Se um parmetro thisArg provido ao find, ele ser usado como o this para cada acionamento do callback. Se no for provido, ento undefined usado.

O find no altera a array qual foi acionado.

O conjunto dos elementos processados por find definido antes do primeiro acionamento do callback. Elementos que so anexados array aps o incio da chamada ao find no sero visitados pelo callback. Se um elemento existente ainda no 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 excludos ainda so visitados.

Exemplos

Encontrar um objeto em um array por uma de suas propriedades

js
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

js
const inventory = [
  { name: "maas", 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 nmero primo em um array

O exemplo a seguir encontra um elemento dentro da array que nmero primo (ou retorna undefined se no houverem nmeros primos).

js
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 mtodo foi adicionado especificao do ECMAScript 2015 e pode no estar disponvel em todas as implementaes do JavaScript. Entretanto, voc pode fazer um polyfill para o Array.prototype.find com o trecho de cdigo abaixo:

js
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;
  };
}

Especificaes

Specification
ECMAScript 2027 LanguageSpecification
# sec-array.prototype.find

Compatibilidade com navegadores

Veja tambm


Web Proxy Viewer  |  New URL  |  Original Page