Métodos find e findIndex: procurando um item na lista

Aprenda a encontrar o primeiro elemento que satisfaz uma condição ou seu índice.

Quando você tem uma lista grande, nem sempre quer percorrer tudo “na mão”.
Às vezes você só quer:

  • encontrar o primeiro item que atende uma condição;
  • descobrir em qual posição esse item está.

Para isso, o JavaScript oferece dois métodos muito úteis:

  • find() → devolve o item
  • findIndex() → devolve o índice (posição)

1) Método find()

O find percorre o array e retorna o primeiro elemento que passar na condição.

Exemplo

const produtos = [
  { id: 1, nome: "Teclado" },
  { id: 2, nome: "Mouse" },
  { id: 3, nome: "Monitor" }
];

const encontrado = produtos.find(produto => produto.id === 2);

console.log(encontrado);
// { id: 2, nome: "Mouse" }

Se nenhum item atender à condição, o retorno será undefined.


2) Método findIndex()

O findIndex faz busca parecida, mas retorna a posição do item encontrado.

Exemplo

const nomes = ["Ana", "Carlos", "Bia"];

const indice = nomes.findIndex(nome => nome === "Carlos");

console.log(indice); // 1

Se não encontrar, retorna -1.


3) Diferença prática entre os dois

  • Use find quando você precisa do conteúdo do item.
  • Use findIndex quando você precisa da posição para atualizar, remover ou substituir.

4) Exemplo real: atualizar item da lista

const tarefas = [
  { id: 1, titulo: "Estudar JS", concluida: false },
  { id: 2, titulo: "Fazer exercícios", concluida: false }
];

const i = tarefas.findIndex(tarefa => tarefa.id === 2);

if (i !== -1) {
  tarefas[i].concluida = true;
}

console.log(tarefas);

Aqui usamos findIndex porque precisávamos da posição para editar a tarefa certa.


5) Atenções importantes

  • find para no primeiro item que atende à condição.
  • findIndex também para no primeiro item compatível.
  • Se quiser todos os itens que atendem à condição, o ideal é filter.

6) Resumo da lição

  • find: retorna o primeiro item encontrado (ou undefined).
  • findIndex: retorna o índice do primeiro item encontrado (ou -1).
  • Ambos ajudam muito em buscas rápidas dentro de arrays.