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 itemfindIndex()→ 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
findquando você precisa do conteúdo do item. - Use
findIndexquando 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
findpara no primeiro item que atende à condição.findIndextambé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 (ouundefined).findIndex: retorna o índice do primeiro item encontrado (ou-1).- Ambos ajudam muito em buscas rápidas dentro de arrays.