1
resposta

Dificuldade de aplicação prática

olá!

Tive dificuldade em visualizar em um cenário real como isso funcionaria, alguem consegue me explicar melhor?

1 resposta

Oi, Breno! Boa pergunta — e olha, essa dificuldade é super comum. Set e Map parecem meio "abstratos" quando a gente vê só os exemplos básicos, né?

Imagina que você tá construindo um chat. Toda vez que alguém entra, você precisa mostrar quem tá online. O problema é que, dependendo de como o sistema funciona, o mesmo usuário pode "entrar" várias vezes (reconectou, trocou de aba, etc.). Se você usar um array, vai acabar com duplicatas:

let usuariosOnline = [];
usuariosOnline.push('breno');
usuariosOnline.push('maria');
usuariosOnline.push('breno'); // reconectou

console.log(usuariosOnline); // ['breno', 'maria', 'breno'] — eita, duplicou

Com Set, isso simplesmente não acontece:

let usuariosOnline = new Set();
usuariosOnline.add('breno');
usuariosOnline.add('maria');
usuariosOnline.add('breno'); // ignorado automaticamente

console.log(usuariosOnline); // Set { 'breno', 'maria' }

Você não precisa ficar verificando "esse usuário já tá na lista?" antes de adicionar. O Set cuida disso pra você.

Agora pensa num carrinho de compras. Você tem produtos, e cada produto tem uma quantidade. Um objeto comum até funciona, mas Map brilha quando as chaves são mais complexas.

Exemplo simples primeiro:

let carrinho = new Map();

carrinho.set('camiseta', 2);
carrinho.set('calça', 1);
carrinho.set('camiseta', 3); // atualizou a quantidade

console.log(carrinho.get('camiseta')); // 3

Mas a mágica do Map aparece quando você precisa usar algo que não é string como chave. Por exemplo, imagina que você tem objetos de produto:

let produto1 = { id: 101, nome: 'Camiseta' };
let produto2 = { id: 102, nome: 'Calça' };

let carrinho = new Map();
carrinho.set(produto1, 2);
carrinho.set(produto2, 1);

console.log(carrinho.get(produto1)); // 2

Com objetos normais do JavaScript, você não consegue usar outro objeto como chave dessa forma. O Map permite isso.

O que é importante ter em mente:

Set → quando você precisa de uma lista sem repetição (tags de um post, IDs já processados, usuários online)
Map → quando você precisa associar dados a uma chave específica e quer mais flexibilidade do que um objeto oferece (carrinho, cache de resultados, contadores por item)

No começo, você vai usar mais array e objeto mesmo — e tá tudo bem! Set e Map são ferramentas que você vai puxar da caixa quando o problema pedir.

Qualquer outra dúvida, manda aí!

Bons estudos