Trabajar con conjuntos en matemáticas tiene operaciones clásicas: unión, intersección, diferencia… Durante años, en JavaScript teníamos que reproducirlas a mano combinando spread, filter y has. Hoy, los Set traen métodos nativos para hacerlo de forma directa y legible.
NotaEstos métodos están disponibles en los navegadores modernos y en Node.js a partir de la versión 22. Todos devuelven un nuevo
Set(no modifican los originales) o unboolean, según el caso.
Para todos los ejemplos partiremos de estos dos conjuntos:
const a = new Set([1, 2, 3, 4])
const b = new Set([3, 4, 5, 6])
.union()Devuelve un nuevo Set con los elementos que están en cualquiera de los dos conjuntos (sin duplicados).
const a = new Set([1, 2, 3, 4])
const b = new Set([3, 4, 5, 6])
console.log(a.union(b)) // Set(6) { 1, 2, 3, 4, 5, 6 }
.intersection()Devuelve un nuevo Set con los elementos que están en ambos conjuntos a la vez.
const a = new Set([1, 2, 3, 4])
const b = new Set([3, 4, 5, 6])
console.log(a.intersection(b)) // Set(2) { 3, 4 }
.difference()Devuelve un nuevo Set con los elementos que están en el primer conjunto pero no en el segundo. Ojo: el orden importa, no es lo mismo a.difference(b) que b.difference(a).
const a = new Set([1, 2, 3, 4])
const b = new Set([3, 4, 5, 6])
console.log(a.difference(b)) // Set(2) { 1, 2 }
console.log(b.difference(a)) // Set(2) { 5, 6 }
.symmetricDifference()Devuelve un nuevo Set con los elementos que están en uno u otro, pero no en ambos. Es decir, lo contrario de la intersección.
const a = new Set([1, 2, 3, 4])
const b = new Set([3, 4, 5, 6])
console.log(a.symmetricDifference(b)) // Set(4) { 1, 2, 5, 6 }
.isSubsetOf()Devuelve un boolean: true si todos los elementos del primer conjunto están en el segundo.
const a = new Set([1, 2])
const b = new Set([1, 2, 3, 4, 5])
console.log(a.isSubsetOf(b)) // true
console.log(b.isSubsetOf(a)) // false
.isSupersetOf()El espejo del anterior. Devuelve true si el primer conjunto contiene a todos los elementos del segundo.
const a = new Set([1, 2, 3, 4, 5])
const b = new Set([4, 5])
console.log(a.isSupersetOf(b)) // true
console.log(b.isSupersetOf(a)) // false
.isDisjointFrom()Devuelve true si los dos conjuntos no comparten ningún elemento.
const a = new Set([1, 2, 3])
const b = new Set([4, 5, 6])
console.log(a.isDisjointFrom(b)) // true
const c = new Set([3, 4, 5])
console.log(a.isDisjointFrom(c)) // false (comparten el 3)
| Método | Devuelve | Qué obtienes |
|---|---|---|
union | Set | Elementos de ambos conjuntos |
intersection | Set | Elementos comunes |
difference | Set | Lo que está en a y no en b |
symmetricDifference | Set | Lo que no comparten |
isSubsetOf | boolean | ¿a está contenido en b? |
isSupersetOf | boolean | ¿a contiene a b? |
isDisjointFrom | boolean | ¿no comparten nada? |
Inicia sesión
Para guardar tu progreso y desbloquear logros