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.
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']
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' }
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.
Foto de Ferenc Almasi na Unsplash
Top comments (3)
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)
eO(1)
respectivamente, enquanto percorrer a lista inteira seriaO(n)
, que tem um desempenho esperado pior.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.
Gostei bastante desse artigo, a estrutura facilita bastante o entendimento do conteúdo, parabéns pelo artigo!!