Verificação de string em array TypeScript: otimização e velocidade

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: "Será que minha string está aqui?" — a eterna pergunta do desenvolvedor

Você está escrevendo código em TypeScript e de repente surge a pergunta: "Como verifico se um array contém uma determinada string?" Parece um detalhe, mas disso depende o funcionamento de filtros, validação de formulários, busca em listas e centenas de outros cenários. Esta pergunta no Stack Overflow acumulou milhares de visualizações — o que significa que ela atormenta não apenas iniciantes, mas também desenvolvedores experientes.

Hoje vamos analisar todas as formas legítimas de verificar a presença de uma string em um array no TypeScript. Mas não vamos apenas listar métodos — vamos olhar sob o capô do desempenho, descobrir qual opção é mais rápida e quando usar estruturas de dados avançadas. Você aprenderá a escrever não apenas código funcional, mas código rápido e elegante.

Vamos nessa! 🚀



Método includes(): simplicidade e legibilidade

A maneira mais óbvia e moderna é o método includes(). Ele surgiu no ES2016 e é nativamente suportado pelo TypeScript. Tudo o que você precisa fazer é chamá-lo no array e passar a string procurada.

const fruits: string[] = ['maçã', 'banana', 'laranja', 'kiwi'];const searchTerm: string = 'banana';

if (fruits.includes(searchTerm)) { console.log('Fruta encontrada! 🍌');} else { console.log('Essa fruta não existe.');}

Vantagens:

  • Código extremamente legível — fica claro imediatamente o que está sendo feito.
  • Retorna boolean — ideal para condições.
  • Suporta a tipagem estrita do TypeScript.

Desvantagens:

  • Busca linear O(n) — para arrays enormes (dezenas de milhares de elementos) pode ser lento.
  • Não funciona com NaN (mas isso é raro para strings).

Para 90% das tarefas, includes() é a sua escolha. Simples, confiável, rápido.



Método indexOf(): antigo, mas testado

Antes do includes(), todos usavam indexOf(). Ele também retorna o índice do elemento, mas se o elemento não existir, retorna -1. A verificação de -1 se tornou um clássico.

const languages: string[] = ['JavaScript', 'TypeScript', 'Python', 'Go'];const target: string = 'TypeScript';

if (languages.indexOf(target) !== -1) { console.log('Linguagem encontrada!');} else { console.log('Linguagem não está na lista.');}

Vantagens:

  • Funciona em todos os ambientes, mesmo em navegadores antigos (se isso for importante).
  • Permite obter a posição do elemento para ações posteriores.

Desvantagens:

  • Menos legível — é preciso lembrar do -1.
  • A mesma complexidade O(n).
  • TypeScript pode reclamar de comparação implícita; é melhor especificar o tipo explicitamente.

Dica: se você não precisa do índice, use includes(). Mas conhecer indexOf() é útil — ele aparece em código legado.



Método find(): quando você precisa de mais do que apenas true/false

O método find() retorna o primeiro elemento que satisfaz a condição, ou undefined se nada for encontrado. É uma ferramenta poderosa quando você não está apenas procurando uma string, mas um objeto com um campo específico.

interface User {  id: number;  name: string;}

const users: User[] = [ { id: 1, name: 'Ana' }, { id: 2, name: 'Boris' }, { id: 3, name: 'Vitor' }];

const foundUser = users.find(user => user.name === 'Boris');

if (foundUser) { console.log(`Usuário encontrado: ${foundUser.name}`);}

Para arrays simples de strings, find() é exagerado, mas se você precisa obter o próprio elemento ou verificar uma condição complexa, esta é a melhor escolha.

Desempenho: também O(n), mas um pouco mais lento que includes() devido à chamada de callback em cada iteração.



Otimização com Set: quando a velocidade é crítica

Se você verifica a presença de s

Blogs

Book Recommendations