O objeto Set do JavaScript sempre foi útil para guardar valores únicos, mas faltavam operações básicas de conjuntos, como união e interseção. Agora o Set ganhou métodos nativos para isso, eliminando a necessidade de converter tudo para array e usar filter() manualmente.
O jeito antigo
const a = new Set([1, 2, 3]);
const b = new Set([2, 3, 4]);
// Interseção manual
const intersecao = new Set([...a].filter(x => b.has(x)));
console.log(intersecao); // Set(2) {2, 3}
Funciona, mas exige converter o Set para array, usar filter() e converter de volta — para cada operação diferente.
União
const a = new Set([1, 2, 3]);
const b = new Set([2, 3, 4]);
console.log(a.union(b)); // Set(4) {1, 2, 3, 4}
Interseção
console.log(a.intersection(b)); // Set(2) {2, 3}
Diferença
difference() retorna os itens que existem no primeiro Set, mas não no segundo:
console.log(a.difference(b)); // Set(1) {1}
console.log(b.difference(a)); // Set(1) {4}
Diferença simétrica
symmetricDifference() retorna os itens que existem em apenas um dos dois Sets:
console.log(a.symmetricDifference(b)); // Set(2) {1, 4}
Verificando relações entre conjuntos
Também é possível verificar se um Set é subconjunto, superconjunto ou disjunto de outro:
const pequeno = new Set([2, 3]);
const grande = new Set([1, 2, 3, 4]);
console.log(pequeno.isSubsetOf(grande)); // true
console.log(grande.isSupersetOf(pequeno)); // true
console.log(pequeno.isDisjointFrom(new Set([5, 6]))); // true
Quando usar
- Comparar permissões, tags ou categorias entre dois conjuntos de dados.
- Encontrar itens em comum ou diferentes entre duas listas, sem duplicados.
- Validar relações de subconjunto (ex: verificar se todas as permissões necessárias estão presentes).
- Substituir bibliotecas utilitárias que só existiam para suprir essa falta no
Setnativo.
Compatibilidade
O suporte já é bom nos navegadores modernos, mas vale sempre conferir antes de usar em produção, principalmente se o projeto precisar suportar navegadores mais antigos.
Conclusão
Os novos métodos de Set trazem operações clássicas de teoria dos conjuntos direto para o JavaScript nativo, deixando o código mais legível e eliminando conversões manuais entre Set e Array só para comparar coleções.
0 Comentário
Deixe seu Comentário!