Domine Sets em JavaScript ES6: Guia Completo com Exemplos

Explorando Conjuntos em JavaScript (ES6)

Os conjuntos representam uma adição valiosa ao JavaScript, introduzida no ES6. Este artigo tem como objetivo desmistificar o conceito de conjuntos, demonstrando seu uso prático e explorando os métodos que disponibilizam para a resolução de problemas.

O que são Conjuntos?

Um conjunto, como o próprio nome sugere, é uma coleção de elementos que são únicos. Ou seja, ele não permite a inclusão de valores repetidos. Em JavaScript, os conjuntos mantêm a ordem de inserção dos elementos, o que os torna coleções ordenadas. Eles podem armazenar tipos de dados primitivos ou objetos.

A seguir, demonstraremos a sintaxe para criar conjuntos em JavaScript. É recomendável que você utilize um ambiente de desenvolvimento (IDE) para acompanhar os exemplos.

const nomes = new Set(["João", "Maria", "Carlos", "Ana", "Maria"]);
console.log(nomes);

const palavraAleatoria = new Set("Aaaaaabc");
console.log(palavraAleatoria);

const numeros = new Set([10, 10, 5, 2, 1, 1, 2, 3]);
console.log(numeros);

Propriedades e Métodos

Os conjuntos oferecem uma variedade de propriedades e métodos que simplificam o trabalho com essa estrutura de dados. A nomenclatura dos métodos é intuitiva, facilitando sua compreensão. Abaixo, detalhamos cada um deles:

Tamanho

A propriedade `size` retorna a quantidade de elementos presentes no conjunto.

const nomes = new Set(["João", "Maria", "Carlos", "Ana", "Maria"]);
console.log(`Tamanho: ${nomes.size}`);

Adicionar

O método `add` é utilizado para inserir um novo elemento ao conjunto. Se o elemento já existir, ele não será adicionado novamente.

const nomes = new Set();

nomes.add("João");
nomes.add("Maria");
nomes.add("Carlos");
nomes.add("Ana");
nomes.add("Maria");

console.log(nomes);

Verificar Existência

O método `has` recebe um argumento e retorna `true` se o elemento estiver presente no conjunto, e `false` caso contrário.

const nomes = new Set(["João", "Maria", "Carlos", "Ana", "Maria"]);

console.log(nomes.has("Maria"));
console.log(nomes.has("Pedro"));

Remover

O método `delete` recebe um argumento e remove o elemento do conjunto. Se o elemento não existir, nenhuma ação será executada e nenhum erro será gerado.

const nomes = new Set(["João", "Maria", "Carlos", "Ana", "Maria"]);

nomes.delete("João");

console.log(nomes);

Entradas

O método `entries` retorna um iterador contendo arrays de pares chave-valor na ordem de inserção. Neste caso, a chave e o valor são idênticos.

const nomes = new Set(["João", "Maria", "Carlos", "Ana", "Maria"]);

const entradas = nomes.entries();

console.log(entradas.next().value);
console.log(entradas.next().value);
console.log(entradas.next().value);
console.log(entradas.next().value);
console.log(entradas.next().value);

Chaves

O método `keys` retorna um iterador com os elementos do conjunto, na ordem em que foram inseridos.

const nomes = new Set(["João", "Maria", "Carlos", "Ana", "Maria"]);

const chaves = nomes.keys();

console.log(chaves.next().value);
console.log(chaves.next().value);
console.log(chaves.next().value);
console.log(chaves.next().value);
console.log(chaves.next().value);

Valores

O método `values` retorna um iterador com os valores do conjunto, na ordem de inserção, similar ao método `keys`.

const nomes = new Set(["João", "Maria", "Carlos", "Ana", "Maria"]);

const valores = nomes.values();

console.log(valores.next().value);
console.log(valores.next().value);
console.log(valores.next().value);
console.log(valores.next().value);
console.log(valores.next().value);

Limpar

O método `clear` remove todos os elementos do conjunto, deixando-o vazio.

const nomes = new Set(["João", "Maria", "Carlos", "Ana", "Maria"]);

nomes.clear();

console.log(nomes);

Iterar com ForEach

O método `forEach` permite iterar sobre todos os elementos do conjunto, executando uma função para cada um deles.

const nomes = new Set(["João", "Maria", "Carlos", "Ana", "Maria"]);

nomes.forEach((elemento) => {
   console.log(elemento);
});

Aplicação Prática

Vamos observar um exemplo de uso de conjuntos em um cenário prático. Dado um array, nosso objetivo é remover todos os valores duplicados. Para isso, podemos utilizar as propriedades únicas de um conjunto.

O processo de resolução envolve os seguintes passos:

  • Inicializar um array com dados de exemplo.
  • Criar um conjunto vazio.
  • Percorrer cada elemento do array:
    • Adicionar cada elemento ao conjunto (elementos duplicados serão automaticamente ignorados).
  • Criar um novo array vazio.
  • Percorrer o conjunto e adicionar cada elemento ao novo array.
  • Exibir o novo array, contendo apenas elementos únicos.

A implementação deste processo é apresentada abaixo:

const arr = ["João", "Maria", "Carlos", "Ana", "Maria"];

const temp = new Set();

arr.forEach((elemento) => {
   temp.add(elemento);
});

const novoArr = [];

temp.forEach((elemento) => {
   novoArr.push(elemento);
});

console.log(novoArr);

Conclusão

Este artigo forneceu uma visão abrangente sobre o uso de conjuntos em JavaScript. Agora você possui o conhecimento necessário para incorporá-los em seus projetos. Utilize este recurso e explore todas as suas possibilidades.

Bons estudos! 🚀