olá!
Tive dificuldade em visualizar em um cenário real como isso funcionaria, alguem consegue me explicar melhor?
olá!
Tive dificuldade em visualizar em um cenário real como isso funcionaria, alguem consegue me explicar melhor?
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