Un set es una colección de elementos únicos”. Podemos visualizar un set como un array en el que de alguna forma garantizamos que nunca hay elementos repetidos. Otra característica de los sets, es que los elementos no están ordenados de ninguna forma en particular, pero además de eso no hay mucho más que podamos decir desde el punto de vista de la estructura de datos en sí.
En JavaScript, un Set es una estructura de datos que permite almacenar valores únicos de cualquier tipo, ya sea primitivo u objeto. A diferencia de los arreglos, los Sets no permiten elementos duplicados, lo que los hace ideales cuando necesitamos listas sin repeticiones.
Un Set es un objeto que almacena elementos únicos y no mantiene un orden específico de inserción.
Se pueden usar para evitar duplicados de manera eficiente y sencilla.
Para crear un Set, utilizamos el constructor Set():
const mySet = new Set(); También podemos inicializar un Set con valores:
const colors = new Set(['red', 'green', 'blue']);
console.log(colors);
// Salida: Set {'red', 'green', 'blue'} add(value): Agrega un elemento al Set.delete(value): Elimina un elemento específico del Set.has(value): Verifica si un valor está en el Set.size: Retorna el número de elementos en el Set.clear(): Elimina todos los elementos del Set.add(value):Agrega un elemento al Set. Si el valor ya existe, no se agregará de nuevo.
const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(1); // Este valor no se agregará porque ya existe
console.log(mySet);
// Salida: Set {1, 2} delete(value)Elimina un elemento específico del Set. Si el valor existe, se elimina; si no existe, el Set permanece igual.
mySet.delete(1);
console.log(mySet); // Set {2} has(value))Verifica si un valor está en el Set, devolviendo true o false.
const names = new Set(['Alice', 'Bob', 'Charlie']);
console.log(names.has('Alice')); // true
console.log(names.has('Eve')); // false sizeRetorna el número de elementos en el Set.
console.log(mySet.size); // 1 clear()Elimina todos los elementos del Set, dejándolo vacío.
mySet.clear();
console.log(mySet); // Set {} Una forma rápida de eliminar duplicados de un arreglo es convirtiéndolo a un Set y luego de vuelta a un arreglo.
const numbers = [1, 2, 3, 3, 4, 4, 5];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers);
// Salida: [1, 2, 3, 4, 5] Convertimos el Array a un Set para eliminar duplicados y luego usamos el operador de propagación (…) para convertirlo de nuevo a un Array.
Puedes iterar sobre un Set utilizando for...of o el método forEach(). Ambos permiten acceder a cada elemento del Set.
const fruits = new Set(['apple', 'banana', 'mango']);
for (const fruit of fruits) {
console.log(fruit);
}
// También se puede usar forEach
fruits.forEach(fruit => console.log(fruit));
// Salida:
// apple
// banana
// mango Aquí, usamos for...of y el método forEach() para recorrer cada fruta en el Set y mostrarla en la consola.
Los Sets y los Arrays son ambos estructuras de datos, pero los Sets no permiten duplicados, mientras que los Arrays sí.
const myArray = [1, 2, 2, 3];
const mySet = new Set(myArray);
console.log(mySet);
// Salida: Set {1, 2, 3} Explicación: Al convertir un Array en un Set, se eliminan automáticamente los duplicados, resultando en un conjunto único de elementos.
Los Sets pueden almacenar caracteres únicos de una cadena, lo que es útil para encontrar caracteres distintos.
const str = "hello";
const charSet = new Set(str);
console.log(charSet); // Salida: Set {'h', 'e', 'l', 'o'} Al crear un Set a partir de una cadena, cada carácter se convierte en un elemento del Set, eliminando duplicados automáticamente.
Los Sets son ideales para asegurar que los elementos de una lista sean únicos.
const userIds = new Set();
userIds.add('user1');
userIds.add('user2');
userIds.add('user1'); // Este duplicado no se añadirá
console.log(userIds); // Salida: Set {'user1', 'user2'} Al agregar usuarios a un Set, automáticamente se evitan duplicados, asegurando que cada ID de usuario sea único.
Los Sets se pueden convertir fácilmente en Arrays usando el operador de propagación o el método Array.from().
const mySet = new Set([1, 2, 3]);
const arrayFromSet1 = [...mySet];
const arrayFromSet2 = Array.from(mySet);
console.log(arrayFromSet1); // Salida: [1, 2, 3]
console.log(arrayFromSet2); // Salida: [1, 2, 3] Ambas técnicas convierten un Set en un Array, permitiendo que se utilicen métodos de Array adicionales.
Puedes combinar dos Sets en uno nuevo utilizando el operador de propagación.
const setA = new Set([1, 2, 3]);
const setB = new Set([3, 4, 5]);
const union = new Set([...setA, ...setB]);
console.log(union);
// Salida: Set {1, 2, 3, 4, 5} Al usar el operador de propagación, unimos los elementos de ambos Sets en un nuevo Set, manteniendo la unicidad de los elementos.
La intersección de dos Sets consiste en crear un nuevo Set que contenga solo los elementos que están presentes en ambos Sets.
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([3, 4, 5, 6]);
const intersection = new Set([...setA].filter(value => setB.has(value)));
console.log(intersection);
// Salida: Set {3, 4} Al utilizar el método filter(), verificamos qué elementos de setA también están presentes en setB y creamos un nuevo Set con esos elementos, resultando en la intersección.
La diferencia de dos Sets genera un nuevo Set que contiene los elementos que están en el primer Set pero no en el segundo.
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([3, 4, 5, 6]);
const difference = new Set([...setA].filter(value => !setB.has(value)));
console.log(difference);
// Salida: Set {1, 2} Usamos filter() para obtener los elementos de setA que no están en setB, creando así un nuevo Set que representa la diferencia entre ambos.
Eficiencia al evitar duplicados: En lugar de verificar manualmente la existencia de un elemento, los Sets gestionan esto automáticamente. Operaciones de conjuntos: La estructura permite realizar operaciones de conjuntos fácilmente, algo que los arrays no logran de forma eficiente. Rapidez en comprobación y eliminación: Los métodos has y delete en Sets son eficientes para verificar y eliminar elementos en comparación con los arrays.
Los Sets en JavaScript son una herramienta poderosa cuando necesitamos manejar listas de valores únicos o realizar operaciones de conjuntos. Son simples de usar y brindan un rendimiento excelente para la eliminación de duplicados y la gestión de grandes colecciones de datos.