Como remover um elemento específico de um array em JavaScript: guia detalhado com exemplos
\n\nOlá, colega desenvolvedor! Se você já escreveu em JavaScript, certamente já se deparou com a situação em que precisa remover um elemento específico de um array. Parece uma tarefa simples, mas iniciantes (e até programadores experientes) muitas vezes ficam confusos: splice? filter? Ou talvez delete? Ou escrever a própria solução do zero?
\n\nA pergunta "How can I remove a specific item from an array in JavaScript?" é uma das mais populares no Stack Overflow, com milhões de visualizações. E não é por acaso: arrays são a base do trabalho com dados em JS, e saber como limpá-los corretamente é uma habilidade indispensável.
\n\nNeste artigo, vamos explorar 5 maneiras comprovadas de remover um elemento de um array em JavaScript. Você descobrirá qual método é mais rápido, qual é mais limpo para leitura e em quais situações cada um é melhor aplicado. Vamos lá!
\n\n1. Método splice() — o clássico
\n\nVamos começar com a maneira mais popular — splice(). Este método modifica o array original, removendo, substituindo ou adicionando elementos. Para remover um único elemento, a sintaxe é:
array.splice(index, 1);\n\nO primeiro parâmetro é o índice do elemento a ser removido, o segundo é a quantidade de elementos a serem removidos (1 significa que removemos apenas um).
\n\nExemplo:
\n\nlet fruits = ['maçã', 'banana', 'pera', 'laranja'];\n\n// Removendo 'banana' (índice 1)\nfruits.splice(1, 1);\n\nconsole.log(fruits); // ['maçã', 'pera', 'laranja']\n\nImportante: splice() modifica o array original. Se você precisar de uma cópia, primeiro faça let copy = [...array].
Quando usar: quando você sabe exatamente o índice do elemento. Ideal para remoção por posição.
\n\n2. Combinação indexOf() + splice() — remoção por valor
\n\nE se não soubermos o índice, mas soubermos o valor? Aqui, indexOf() nos ajuda — ele encontra o primeiro índice do elemento com o valor fornecido (ou retorna -1 se o elemento não existir).
let numbers = [10, 20, 30, 40, 50];\nlet itemToRemove = 30;\n\nlet index = numbers.indexOf(itemToRemove);\nif (index !== -1) {\n numbers.splice(index, 1);\n}\n\nconsole.log(numbers); // [10, 20, 40, 50]\n\nImportante: este método remove apenas a primeira ocorrência. Se houver vários elementos iguais no array, os restantes permanecerão.
\n\nQuando usar: quando você precisa remover um elemento específico do array por valor e tem certeza de que o elemento aparece apenas uma vez.
\n\n3. Método filter() — para quem gosta de código limpo
\n\nO método filter() é meu favorito pessoal. Ele não modifica o array original, mas cria um novo contendo apenas os elementos que passam no teste. Isso torna o código mais previsível e seguro.
let numbers = [10, 20, 30, 40, 50];\nlet itemToRemove = 30;\n\nlet filteredNumbers = numbers.filter(num => num !== itemToRemove);\n\nconsole.log(filteredNumbers); // [10, 20, 40, 50]\nconsole.log(numbers); // [10, 20, 30, 40, 50] (original não foi alterado)\n\nVantagem: remove todas as ocorrências do valor. Se houver dois números 30 no array, ambos desaparecerão.
\n\nDesvantagem: cria um novo array, o que pode ser menos eficiente ao trabalhar com arrays muito grandes (mas para 99% dos casos, isso não é crítico).
\n\nQuando usar: quando você precisa de imutabilidade (não alterar os dados originais) ou precisa remover todas as duplicatas.
\n\n4. Operador delete — perigoso, mas rápido
\n\nO operador delete remove uma propriedade de um objeto. Como um array também é um objeto, ele pode ser aplicado a arrays. Mas cuidado: ele deixa um "buraco" (um elemento vazio).
let fruits = ['maçã', 'banana', 'pera'];