JavaScript: Trabalhando com Set
Tags: javascript, braziliandevs, beginners, node
Published: 2024-06-25 11:36:00

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](https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExZGJoOTFkejM5djdnbGp3eTNxMGU3dzBlNnN1dWc4NjcxYTQzbGVyciZlcD12MV9naWZzX3NlYXJjaCZjdD1n/GpyS1lJXJYupG/giphy.gif)

## Tabela de conteúdo

* [O que é o Set?](#o-que-é-o-set)
* [Métodos](#métodos)
* [Exemplos](#exemplos)
* [Conclusão](#conclusão)
* [Referências](#referências)

## 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](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/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

```javascript

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

```javascript
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

* [Map MDN](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Map)
* [Set MDN](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Set)

-------

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]
(https://cristiansilva.dev/).

<img src="https://media.giphy.com/media/xULW8v7LtZrgcaGvC0/giphy.gif" alt="thank you dog" />

Foto de <a href="https://unsplash.com/pt-br/@flowforfrank?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Ferenc Almasi</a> na <a href="https://unsplash.com/pt-br/fotografias/uma-tela-de-computador-com-um-monte-de-texto-sobre-ele-oCm8nPkE40k?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a>