Javascript

Como remover elementos de array em Javascript?

Se você já se aventurou na programação em JavaScript, provavelmente já se deparou com a necessidade de remover um elemento de um array.

Background Image

Se você já se aventurou na programação em JavaScript, provavelmente já se deparou com a necessidade de remover um elemento específico de um array. Essa é uma tarefa comum que pode ser realizada de várias maneiras.

Neste artigo, vamos explorar diferentes técnicas e métodos para remover elementos de um array em JavaScript. Vamos começar!

Mão na massa

Arrays em Javascript

Estrutura de índice e valores em um Array
Estrutura de índice e valores em um Array

A estrutura de array no JavaScript é uma coleção ordenada de elementos, onde cada elemento é identificado por um índice 🤓, começando em 0. Isso significa que o primeiro elemento de um array tem o índice 0, o segundo tem o índice 1 e assim por diante.

Os arrays em JavaScript podem conter uma variedade de tipos de dados, como números, strings, objetos e até mesmo outros arrays. Eles são altamente flexíveis e dinâmicos, permitindo que você adicione, remova e modifique elementos facilmente.

Você pode acessar os elementos de um array usando a notação de colchetes, por exemplo, meuArray[0] para acessar o primeiro elemento. Além disso, os arrays têm muitos métodos incorporados, como push() para adicionar um elemento no final, pop() para remover o último elemento e length para obter o número de elementos no array.

Em resumo, os arrays em JavaScript são uma estrutura fundamental para armazenar e manipular conjuntos de dados, tornando-os essenciais para muitas tarefas de programação, desde armazenar uma lista de nomes até gerenciar informações complexas em aplicativos da web.

Remoção de elemento por valor

Removendo elementos pelo valor
Removendo elementos pelo valor

O exemplo mais simples e comum de todos é a remoção por valor. Nesse caso, o método filter() é útil. Ele cria um novo array com todos os elementos que atendem a uma determinada condição. Veja como usá-lo:

let numeros = [1, 2, 3, 4, 5, 6];
let valorParaRemover = 3; // O valor do elemento a ser removido

// Usando o método filter para remover o elemento por valor
numeros = numeros.filter((numero) => numero !== valorParaRemover);

console.log(numeros); // O array agora é [1, 2, 4, 5, 6]

Neste exemplo, usamos o filter() para criar um novo array que exclui o elemento com o valor especificado.

Remoção de elemento por índice

Removendo elementos pelo índice
Removendo elementos pelo índice

A forma mais simples de remover um elemento de um array – por meio do índice desse elemento. Isso pode ser feito usando o método splice(). Veja como:

let numeros = [1, 2, 3, 4, 5, 6];
let indiceParaRemover = numeros.indexOf(1); // Achando o índice do elemento a ser removido

// Usando o método splice para remover o elemento
numeros.splice(indiceParaRemover, 1);

console.log(numeros); // O array agora é [1, 3, 4, 5, 6]

Aqui, especificamos o índice do elemento que queremos remover (no exemplo, foi o índice 2), bem como o número de elementos a serem removidos (1 no nosso caso).

Lidando com múltiplas ocorrências do mesmo valor

Removendo múltiplas ocorrências do mesmo valor
Removendo múltiplas ocorrências do mesmo valor

E se você tiver várias ocorrências do mesmo valor e quiser removê-las todas? Ainda podemos usar o método filter():

let numeros = [1, 1, 2, 3, 1, 4];
let valorParaRemover = 1; // O valor do elemento a ser removido

// Usando o método filter para remover todas as ocorrências do elemento
numeros = numeros.filter((numero) => numero !== valorParaRemover);

console.log(numeros); // O array agora é [2, 3, 4]

O filter() é aplicado a cada elemento do array, removendo todas as ocorrências do valor especificado.

Evitando a modificação do array original

Nessa abordagem você mantém o array original, criando um novo já sem os elementos indesejados.
Nessa abordagem você mantém o array original, criando um novo já sem os elementos indesejados.

Às vezes, você pode querer manter o array original intacto e criar um novo array sem o elemento a ser removido. Podemos fazer isso usando o filter() de forma não destrutiva:

let numeros = [1, 2, 3, 4, 5];
let valorParaRemover = 3; // O valor do elemento a ser removido

// Criando um novo array sem modificar o original
let novoArray = numeros.filter((numero) => numero !== valorParaRemover);

console.log(numeros); // O array original continua [1, 2, 3, 4, 5]
console.log(novoArray); // O novo array é [1, 2, 4, 5]

Dessa forma, você preserva o array original enquanto cria um novo array sem o elemento indesejado.

Remoção condicional com splice()

Removendo elementos com base em uma condição
Removendo elementos com base em uma condição

Além do método splice() para remoção por índice, também podemos usá-lo com uma função de callback para remover elementos com base em uma condição específica:

let numeros = [1, 2, 3, 4, 5, 6];

// Usando splice com uma função de callback para remover elementos pares
numeros.splice(0, numeros.length, ...numeros.filter((numero) => numero >= 3));

console.log(numeros); // O array agora contém apenas números ímpares: [1, 3, 5]

Neste exemplo, removemos todos os números pares do array original usando o splice().

Remoção eficiente em arrays grandes

Arrays grandes podem ter uma operação de remoção demorada.
Arrays grandes podem ter uma operação de remoção demorada.

À medida que você ganha experiência em programação, é natural lidar com conjuntos de dados cada vez maiores. No entanto, ao trabalhar com arrays muito grandes em JavaScript, a eficiência se torna um fator crucial. A remoção de elementos em arrays extensos pode ser uma operação demorada se não for feita da maneira certa. Vamos explorar algumas estratégias para enfrentar esse desafio:

Usando um Algoritmo de Troca

Estratégia envolvendo a troca de posição do elemento no array
Estratégia envolvendo a troca de posição do elemento no array

Uma das abordagens mais eficientes para remover elementos de um array grande é usar um algoritmo de troca.

👉Em vez de eliminar diretamente um elemento, você pode trocá-lo com o último elemento do array e, em seguida, reduzir o tamanho do array. Isso é especialmente eficaz quando a ordem dos elementos não importa. Veja um exemplo:

let numeros = [1, 2, 3, 4, 5];
let indiceParaRemover = 2; // O índice do elemento a ser removido

// Trocar o elemento a ser removido com o último elemento do array
numeros[indiceParaRemover] = numeros[numeros.length - 1];
numeros.pop(); // Remover o último elemento

console.log(numeros); // O array agora é [1, 2, 5, 4]

Essa técnica minimiza o deslocamento de elementos no array e é eficiente mesmo em arrays grandes.

Utilizando estruturas de dados especializadas

Algumas estruturas de dados especializadas podem te ajudar.
Algumas estruturas de dados especializadas podem te ajudar.

Em casos específicos, onde você precisa realizar remoções frequentes em um array grande, pode ser vantajoso usar estruturas de dados especializadas, como conjuntos (Set) ou mapas (Map).

Essas estruturas são otimizadas para acesso e remoção eficiente de elementos. Veja um exemplo com Set:

let numeros = [1, 2, 3, 4, 5];
let valorParaRemover = 3; // O valor do elemento a ser removido

// Criando um Set a partir do array
let numerosSet = new Set(numeros);

// Removendo o valor especificado
numerosSet.delete(valorParaRemover);

// Convertendo o Set de volta para um array
numeros = Array.from(numerosSet);

console.log(numeros); // O array agora é [1, 2, 4, 5]

Nesse exemplo, o Set é usado para remover eficientemente um valor específico.

Estratégias de Redimensionamento

Removendo diversos elementos de uma vez com o simples redimensionamento do array.
Removendo diversos elementos de uma vez com o simples redimensionamento do array.

Outra consideração importante ao lidar com arrays grandes é como você gerencia o redimensionamento do array após a remoção de elementos. Redimensionar o array a cada remoção pode ser ineficiente, pois alocar memória repetidamente pode consumir recursos 😥.

Uma estratégia é definir um limite superior para o número de elementos que você deseja manter no array e redimensioná-lo apenas quando esse limite for excedido. Isso minimiza as operações de redimensionamento e torna o código mais eficiente.

let limiteSuperior = 5; // Limite máximo de elementos no array
let numeros = [1,2,3,4,5,6,7,8,9,10];

function removerElemento(indice) {
    numeros[indice] = numeros[numeros.length - 1];
    numeros.pop();

    if (numeros.length > limiteSuperior) {
        // Redimensionar o array conforme necessário
        numeros.length = limiteSuperior;
    }
}

// Exemplo de remoção de elemento
removerElemento(3);   // removendo o elemento da posição 3, que é o número 4
console.log(numeros); // O array agora é [1, 2, 3, 10, 5]

Essas estratégias ajudam a enfrentar os desafios de eficiência ao lidar com arrays grandes em JavaScript.

Lembre-se de escolher a abordagem mais adequada para o seu caso específico, considerando a estrutura do seu dado e as operações que você precisa realizar 😸. Com isso, você estará preparado para trabalhar de forma eficiente com conjuntos de dados extensos em seus projetos.

Conclusão

Neste artigo, exploramos diversas maneiras de remover elementos de um array em JavaScript. Desde a remoção por índice até a manipulação de arrays grandes, cuja a remoção de elementos é bastante custosa. Portanto, agora você tem um conjunto de ferramentas para enfrentar esse desafio com confiança.

Lembre-se de escolher a abordagem que melhor atenda às suas necessidades e pratique essas técnicas em seus próprios projetos para se tornar um mestre na manipulação de arrays em JavaScript.

Recursos Adicionais