Como usar find e findIndex no JavaScript: Guia Completo com Exemplos

Aprenda a utilizar os métodos find e findIndex no JavaScript para localizar elementos em arrays de forma eficiente, com exemplos práticos e explicações detalhadas.


Mesmo quem já programa há anos pode tropeçar nisso. Você usa includes() achando que tudo está certo… mas o resultado vem como false. Como assim?

Na maioria das vezes, o problema está em diferenças sutis entre os textos — como uma letra maiúscula, um espaço extra ou um caractere invisível. Neste post, vamos entender por que isso acontece e como evitar esse erro de forma simples e eficaz.


Sumário


1. O que o método includes() faz?

O método includes() verifica se uma string está contida dentro de outra. Ele retorna true ou false.

Exemplo básico:

const frase = "Aprender JavaScript é divertido!";
console.log(frase.includes("JavaScript")); // true ✅

Tudo certo até aqui.

Mas e se tentarmos assim?

console.log(frase.includes("javascript")); // false ❌

Mesmo sendo a mesma palavra, com apenas uma letra diferente, o resultado já muda. E isso nos leva ao primeiro ponto importante...


2. includes() é case-sensitive

Isso significa que ele diferencia letras maiúsculas e minúsculas. "JavaScript" e "javascript" não são a mesma coisa para o JavaScript.

Esse comportamento pode causar erros sutis, principalmente quando o termo de busca vem de uma entrada do usuário ou de uma API.


3. E os espaços? Eles importam?

Sim, mas apenas se fizerem parte do termo de busca.

Vamos testar com um exemplo mais específico:

const texto = " Olá mundo ";

console.log(texto.includes("Olá")); // true ✅
console.log(texto.includes(" Olá")); // true ✅
console.log(texto.includes("Olá ")); // true ✅
console.log(texto.includes("olá")); // false ❌ (minúscula)
console.log(texto.includes("Mundo")); // false ❌ (M maiúsculo)

Como você pode ver, includes() busca exatamente o que você escreveu.

Ou seja, se houver um espaço a mais no início ou no fim da string de busca, ou letras com capitalização diferente, o resultado será false.


4. Como resolver isso do jeito certo?

A melhor solução é normalizar os textos antes da comparação. Isso garante que a verificação não dependa de letras maiúsculas ou espaços acidentais.

Podemos criar uma função simples para isso:

function normalizeText(text) {
  return text.trim().toLowerCase();
}

Agora vamos usá-la para fazer a busca corretamente:

const texto = " Olá mundo ";
const termo = "olá ";

const resultado = normalizeText(texto).includes(normalizeText(termo));
console.log(resultado); // true ✅

Pronto! Agora a busca funciona mesmo que o texto tenha espaços ou letras diferentes.


5. Dica bônus: normalize tudo o que for entrada de usuário

Sempre que estiver trabalhando com dados inseridos pelo usuário (como formulários, buscas ou filtros), normalize:

  • Com trim() para remover espaços nas pontas
  • Com toLowerCase() para ignorar maiúsculas/minúsculas

Esse padrão simples evita uma tonelada de bugs difíceis de rastrear.


6. Conclusão

O método includes() é poderoso, mas é preciso entender seus detalhes. Ele:

  • Diferencia maiúsculas de minúsculas
  • Não ignora espaços nem caracteres invisíveis
  • Exige uma correspondência exata da substring

A solução é normalizar com trim() e toLowerCase() — e com isso, você garante uma verificação mais confiável e à prova de falhas invisíveis.


Gostou da dica? Compartilha esse post com aquele amigo que vive reclamando que "o código tá certo mas não funciona" 😅