DEV Community

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

Posted on

6 1 1 1 1

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

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

While many AI coding tools operate as simple command-response systems, Qodo Gen 1.0 represents the next generation: autonomous, multi-step problem-solving agents that work alongside you.

Read full post

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!!

SurveyJS custom survey software

JavaScript Form Builder UI Component

Generate dynamic JSON-driven forms directly in your JavaScript app (Angular, React, Vue.js, jQuery) with a fully customizable drag-and-drop form builder. Easily integrate with any backend system and retain full ownership over your data, with no user or form submission limits.

Learn more

AWS GenAI LIVE!

GenAI LIVE! is a dynamic live-streamed show exploring how AWS and our partners are helping organizations unlock real value with generative AI.

Tune in to the full event

DEV is partnering to bring live events to the community. Join us or dismiss this billboard if you're not interested. ❤️