Set
En JavaScript, un Set es una colección de valores que no permite duplicados, es decir, cada valor dentro de un Set es único. Esto lo hace ideal para almacenar datos donde la unicidad es importante. Los valores de un Set pueden ser de cualquier tipo, como objetos, números, cadenas, entre otros.
Características principales de un Set:
Section titled “Características principales de un Set:”- No permite duplicados: Si intentas añadir un
valorque ya existe, simplemente será ignorado. - Es iterable: Puedes recorrer un
Setcon bucles comofor...ofo métodos como.forEach(). - Tiene métodos específicos: Incluye métodos como
.add(),.delete(),.has(), y.clear().
Métodos comunes de un Set:
Section titled “Métodos comunes de un Set:”add(valor): Agrega un valor alSet.delete(valor): Elimina un valor delSet.has(valor): Verifica si un valor está en elSet.clear(): Vacía completamente elSet.size: Devuelve el número de elementos en elSet.
Ejemplo básico de uso:
Section titled “Ejemplo básico de uso:”// Crear un nuevo Setconst mySet = new Set();
// Agregar elementos al SetmySet.add(1);mySet.add(2);mySet.add(3);mySet.add(2); // Este valor no se agregará porque ya existe
console.log(mySet); // Output: Set { 1, 2, 3 }
// Comprobar si un valor está en el Setconsole.log(mySet.has(2)); // Output: trueconsole.log(mySet.has(4)); // Output: false
// Eliminar un elemento del SetmySet.delete(2);console.log(mySet); // Output: Set { 1, 3 }
// Obtener el tamaño del Setconsole.log(mySet.size); // Output: 2
// Recorrer un SetmySet.forEach((value) => { console.log(value); // Output: 1, luego 3});
// Vaciar el SetmySet.clear();console.log(mySet); // Output: Set {}Ejemplo práctico: Eliminar duplicados de un array
Section titled “Ejemplo práctico: Eliminar duplicados de un array”const arrayConDuplicados = [1, 2, 3, 4, 4, 5, 5, 6];
// Convertir el array a un Set para eliminar duplicadosconst arraySinDuplicados = [...new Set(arrayConDuplicados)];
console.log(arraySinDuplicados); // Output: [1, 2, 3, 4, 5, 6]Nuevos métodos de Set
Section titled “Nuevos métodos de Set”Permite fusionar dos Set en uno, sin duplicados
const web = new Set(["JavaScript", "HTML", "CSS"]);const backend = new Set(["JavaScript", "Java", "C#"]);const compiled = new Set(["Java", "TypeScript", "C#"]);
web.union(backend); // Ahora web tiene los valores de web y backend sin duplicadosIntersection
Section titled “Intersection”Mira en dos conjuntos Set y devuelve los elementos que están en ambos conjuntos
const web = new Set(["JavaScript", "HTML", "CSS"]);const backend = new Set(["JavaScript", "Java", "C#"]);const compiled = new Set(["Java", "TypeScript", "C#"]);
web.intersection(backend); // Retorna solamente JavaScriptDifference
Section titled “Difference”Nos muestra los elementos que están en el primer conjunto y no en el segundo
const web = new Set(["JavaScript", "HTML", "CSS"]);const backend = new Set(["JavaScript", "Java", "C#"]);const compiled = new Set(["Java", "TypeScript", "C#"]);
web.difference(backend); // Retorna HTML y CSSSubconjuntos y superconjuntos
Section titled “Subconjuntos y superconjuntos”Subconjuntos (isSubsetOf)
Section titled “Subconjuntos (isSubsetOf)”isSubsetOf nos dirá si todos los elementos de begginer están en web
const web = new Set(["JavaScript", "HTML", "CSS"]);const backend = new Set(["JavaScript", "Java", "C#"]);const compiled = new Set(["Java", "TypeScript", "C#"]);
const begginer = new Set(["HTML", "CSS"]);
begginer.difference(web); // Retorna true porque HTML y CSS están también en webweb.difference(begginer); // Retorna false porque la colección web contiene más elementos que begginersuperconjuntos (isSupersetOf)
Section titled “superconjuntos (isSupersetOf)”isSupersetOf nos dirá si web es un superconjunto de begginer
const web = new Set(["JavaScript", "HTML", "CSS"]);const backend = new Set(["JavaScript", "Java", "C#"]);const compiled = new Set(["Java", "TypeScript", "C#"]);
const begginer = new Set(["HTML", "CSS"]);
web.isSupersetOf(begginer); // Retorna true los elementos que están en begginer tamnbién están en webisDisjointFrom
Section titled “isDisjointFrom”Nos dirá si todos elementos de dos colecciones son diferentes
const web = new Set(["JavaScript", "HTML", "CSS"]);const backend = new Set(["JavaScript", "Java", "C#"]);const compiled = new Set(["Java", "TypeScript", "C#"]);
const begginer = new Set(["HTML", "CSS"]);
compiled.isDisjointFrom(web); // Retorna true ya que todos los elementos son diferentesDiferencias principales entre Set y Map:
Section titled “Diferencias principales entre Set y Map:”| Característica | Set | Map |
|---|---|---|
| Formato de datos | Colección de valores únicos | Colección de pares clave-valor |
| Claves | No tiene claves | Claves son únicas |
| Valores | Solo almacena valores | Cada clave tiene un valor asociado |
| Iteración | Itera sobre los valores | Itera sobre claves, valores o ambos |
| Acceso | Solo verifica si un valor existe | Accede a valores mediante claves |
Ejemplo de Set (solo valores):
Section titled “Ejemplo de Set (solo valores):”const mySet = new Set();
mySet.add(1);mySet.add(2);mySet.add(2); // Este duplicado será ignoradomySet.add(3);
console.log(mySet); // Output: Set { 1, 2, 3 }Ejemplo de Map (pares clave-valor):
Section titled “Ejemplo de Map (pares clave-valor):”const myMap = new Map();
myMap.set("a", 1);myMap.set("b", 2);myMap.set("c", 3);myMap.set("a", 4); // Sobrescribe el valor de la clave 'a'
console.log(myMap); // Output: Map { 'a' => 4, 'b' => 2, 'c' => 3 }En resumen:
Set: Una lista de valores únicos, como una bolsa de elementos donde no se repiten.Map: Una tabla de pares clave-valor, como un diccionario.