DEV Community

Cover image for JavaScript: Trabalhando com Set
Cristian Magalhães
Cristian Magalhães

Posted on

JavaScript: Trabalhando com Set

Eae gente bonita, beleza? Vamos continuar nos aprofundando nas estruturas do JavaScript e dessa vez vamos falar sobre o Set a estrutura de dado e não o número.

Gif risada

Tabela de conteúdo

O que é o Set?

De forma simples e objetiva, o Set é um objeto que armazena valores de tipo primitivos até referência a objetos. Porém, o seu grande diferencial e trunfo é pelo fato de não armazenar items repetidos, assim, o Set se torna uma ótima opção para filtrar itens repetidos de uma lista.

Métodos

O Set é bem parecido com objeto Map, porém com uma diferença que muda muito a sua utilização a ausência do método get e isso se deve ao fato do objeto Map ser uma estrutura de chave-valor e o Set não. Logo, toda vez que você precisar encontrar um item dentro de um Set você precisará percorrer a lista toda.

Exemplos

Primeiro, vamos ver um exemplo do uso do Set para remover items duplicados de uma lista


const arr1 = ['0', '1', '2'];
const arr2 = ['2', '0', '3'];
const arr3 = arr1.concat(arr2); // -> [ '0', '0', '1', '2', '2', '3' ]

// Agora com o uso do Set

const set = new Set(); // vamos instanciar o set
// agora vamos adicionar cada item dos dois arrays a ele.
arr1.map(x => set.add(x)); 
arr2.map(x => set.add(x));

// resultado
console.log(Array.from(set)) // -> ['0', '1', '2', '3']

Enter fullscreen mode Exit fullscreen mode

Viu como é simples? Sem necessidade de fazer uma iteração dentro da outra ou criar lógica desnecessária.

Vamos a mais um exemplo, dessa vez mostrando a diferença entre listas e também as interseções

const users01 = new Set([
    'cris',
    'joao',
    'vitor'
]);

const users02 = new Set([
    'matheus',
    'ney',
    'cris'
])

const intersection = new Set([...users01].filter(user => users02.has(user)))
console.log(intersection); // -> Set(1) { 'cris' }

const difference = new Set([...users01].filter(user => !users02.has(user)))
console.log(difference); // -> Set(2) { 'joao', 'vitor' }

Enter fullscreen mode Exit fullscreen mode

Conclusão

Bom, nesse texto quis trazer um pouco sobre o Set para vocês, é importante dizer que não me aprofundo pois a ideia é não te transformar em um especialista do objeto mas sim te apresentar as ferramentas de formas simples e fácil, dessa forma você sempre vai saber o que fazer e pelo o que pesquisar para resolver os seus problemas.

Referências


Espero que tenha sido claro e tenha ajudado a entender um pouco mais sobre o assunto, fique a vontade para dúvidas e sugestões abaixo!

Se chegou até aqui, me segue la nas redes vizinhas.

thank you dog

Foto de Ferenc Almasi na Unsplash

Top comments (3)

Collapse
 
eduardoklosowski profile image
Eduardo Klosowski

E discordo quando fala que para encontrar um item dentro do set precisa percorrer a lista toda. Motivo para isso é que normalmente o set é implementado em cima de outras estruturas de dados que não uma lista, como uma árvore ou hashtable. No caso de uma árvore binária, a quantidade esperada de operações para determinar se um item está no set seria o equivalente ao logaritmo na base 2 da quantidade de itens no set, enquanto num hashtable o esperado seria apenas um acesso a uma posição específica na memória. Essas operações equivalem a O(log2 n) e O(1) respectivamente, enquanto percorrer a lista inteira seria O(n), que tem um desempenho esperado pior.

Collapse
 
cristuker profile image
Cristian Magalhães

Faz sentido a sua explicação porém disse isso usando apenas os exemplos simples do uso do Set. Não entro muito em aplicações reais pois a ideia é realmente entender e conhecer cada estrutura e usar quando for necessário. Mas muito obrigado pelo contexto adicionado.

Collapse
 
clintonrocha98 profile image
Clinton Rocha

Gostei bastante desse artigo, a estrutura facilita bastante o entendimento do conteúdo, parabéns pelo artigo!!