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? - 2.
includes()
é case-sensitive - 3. E os espaços? Eles importam?
- 4. Como resolver isso do jeito certo?
- 5. Dica bônus: normalize entradas de usuário
- 6. Conclusão
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" 😅