Executando verificação de segurança...
1
xaulim
1 min de leitura ·

Como remover itens duplicados de um array no javascript?

Pessoal!
vamos falar sobre como remover itens duplicados de um array no JavaScript.
Se você está procurando uma maneira de limpar seu array de elementos duplicados, aqui estão alguns exemplos que podem ajudar.

  1. Usando o método Set: você pode usar o método Set para remover itens duplicados de um array. O Set é uma coleção não ordenada de valores únicos que não aceita elementos duplicados. Por exemplo:

let myArray = [1, 2, 3, 4, 5, 5];
let mySet = new Set(myArray);
let uniqueArray = Array.from(mySet);
console.log(uniqueArray); // [1, 2, 3, 4, 5]

  1. Usando o método filter(): você também pode usar o método filter() para remover itens duplicados de um array. O filter() cria um novo array com todos os elementos que passam no teste implementado pela função fornecida. Por exemplo:

let myArray = [1, 2, 3, 4, 5, 5];
let uniqueArray = myArray.filter((item, index) => myArray.indexOf(item) === index);
console.log(uniqueArray); // [1, 2, 3, 4 ,5]

Espero que esses exemplos possam ajudá-lo a remover itens duplicados do seu array no JavaScript!
#javascript #programação #desenvolvimento

Carregando publicação patrocinada...
1

Vale lembrar que Set, segundo a especificação da linguagem, não é um método, e sim um objeto.

Além disso, ele só funciona da forma esperada com tipos primitivos (números, strings, booleanos, entre outros). Mas se usarmos objetos, já não funciona:

const array = [
    { nome: 'Fulano', idade: 42 },
    { nome: 'Ciclano', idade: 21 },
    { nome: 'Fulano', idade: 42 } // duplicado, deveria ser eliminado no Set (mas não é)
];
const unique = Array.from(new Set(array));
console.log(unique); // contém todos os 3 elementos

Isso porque o Set trabalha com referências ao objeto, em vez de olhar para o seu conteúdo. No caso, mesmo se criarmos um objeto com os mesmos valores, ele será outro objeto, e portanto outra referência. Por isso o Set considera que são objetos diferentes.

Uma alternativa, nesse caso, é usar um Map. Para cada elemento, geramos uma chave concatenando o nome e idade (que são os valores que consideramos para comparar dois objetos), e em seguida adicionamos no Map. Se a chave já existir, ele não é adicionado novamente, então nem precisamos verificar se ele já existe. Por fim, basta pegar os valores e criar o array final:

const array = [
    { nome: 'Fulano', idade: 42 },
    { nome: 'Ciclano', idade: 21 },
    { nome: 'Fulano', idade: 42 }
];
const map = new Map();
for (const item of array) {
    // nome e idade são os valores para consideramos um objeto "único"
    const key = `${item.nome}_${item.idade}`;
    map.set(key, item); // se já existir no Map, ele não sobrescreve o anterior (o que dá na mesma, já que são os mesmos valores)
}
const unique = Array.from(map.values());
console.log(unique); // [ { nome: 'Fulano', idade: 42 }, { nome: 'Ciclano', idade: 21 } ]
1