Antes de mais nada, quais as principais motivações para se remover valores repetidos de um Array
Remover valores repetidos de um array é importante por várias razões:
- Melhoria de desempenho: Quando um array possui itens duplicados, o desempenho das operações que utilizam esse array pode ser prejudicado, pois a quantidade de dados a ser processada é maior do que o necessário.
- Dados corretos: A presença de itens duplicados em um array pode levar a resultados incorretos em aplicações que utilizam esses dados, já que a duplicidade pode distorcer a representação correta dos dados.
- Armazenamento de memória: Remover itens duplicados de um array também pode liberar memória que estava sendo utilizada de forma desnecessária.
- Leitura de dados: Quando um array possui itens duplicados, a leitura dos dados pode ser prejudicada, já que é necessário realizar ações adicionais para garantir a correção dos dados.
Em resumo, remover itens duplicados de um array é importante para garantir a correção dos dados, melhorar o desempenho das aplicações e liberar memória de forma eficiente.
Formas de se remover valores duplicados de um Array
Utilizando o método filter
:
let array = [1, 2, 3, 4, 5, 1, 2, 3]; let result = array.filter((item, index) => array.indexOf(item) === index); console.log(result); // [1, 2, 3, 4, 5]
Em detalhes o código utilizando Filter:
A linha let array = [1, 2, 3, 4, 5, 1, 2, 3];
cria um array com 8 elementos, sendo que alguns deles são duplicados.
A linha let result = array.filter((item, index) => array.indexOf(item) === index);
aplica o método filter
no array
. O método filter
retorna um novo array com base nos resultados da função de filtro passada como argumento.
A função de filtro utiliza array.indexOf(item)
para determinar a primeira posição do item atual (item
) no array
. Se a primeira posição do item atual é igual ao índice atual (index
), então o item é considerado único e é adicionado ao novo array retornado pelo filter
.
Utilizando o método reduce
:
let array = [1, 2, 3, 4, 5, 1, 2, 3]; let result = array.reduce((unique, item) => unique.includes(item) ? unique : [...unique, item], []); console.log(result); // [1, 2, 3, 4, 5]
Em detalhes o código utilizando o Reduce:
A linha let result = array.reduce((unique, item) => unique.includes(item) ? unique : [...unique, item], []);
aplica o método reduce
no array
. O método reduce
retorna um único valor com base nos resultados da função de acumulação passada como argumento.
A função de acumulação recebe dois argumentos: unique
e item
. unique
representa o valor acumulado ao longo da iteração e é iniciado com o valor []
passado como segundo argumento para o método reduce
. item
representa o item atual do array que está sendo processado.
A função de acumulação usa a operação ternária unique.includes(item) ? unique : [...unique, item]
para determinar se o item atual já está incluído no valor acumulado unique
. Se o item já está incluído, então o valor acumulado não é modificado, retornando unique
. Se o item não está incluído, então ele é adicionado ao valor acumulado com [...unique, item]
.
Utilizando o método Set
:
let array = [1, 2, 3, 4, 5, 1, 2, 3]; let result = Array.from(new Set(array)); console.log(result); // [1, 2, 3, 4, 5]
Em detalhes o código utilizando o Set:
A linha let result = Array.from(new Set(array));
usa o construtor Set
para criar um objeto Set
a partir do array array
. O objeto Set
permite apenas elementos únicos, automaticamente removendo itens duplicados. Em seguida, a função Array.from
é usada para transformar o objeto Set
em um array, result
.
Função útil para utilização em seus códigos para remover valores repetidos de um Array
function removeDuplicates(array) { return Array.from(new Set(array)); } let array = [1, 2, 3, 4, 5, 1, 2, 3]; let result = removeDuplicates(array); console.log(result); // [1, 2, 3, 4, 5]