Ervin Santos
Ervin Santos
Full Stack Web Developer Freelancer
Ervin Santos

Blog

Objeto Set JavaScript

Objeto Set JavaScript

Un set es un grupo de valores únicos. A diferencia de un Map, un Set es conceptualmente más parecido a un Array que a un Object, ya que es una lista de valores y no de pares clave-valor.

Sin embargo, un Set no es un sustituto de los Array, sino un complemento que permite brindar respaldo adicional para trabajar con datos duplicados.

Puede inicializar Set con la sintaxis new Set().

const set = new Set()

console.log(set); // => Set(0){} objeto vacío

Se pueden añadir elementos a un set con el método add(). (Esto no debe confundirse con el método set() disponible para Map, aunque son similares).

const set = new Set()

// Agregando item a un objeto tipo Set
set.add('Beethoven')
set.add('Mozart')
set.add('Chopin')

console.log(set); // => Set(3) {"Beethoven", "Mozart", "Chopin"}

Nota: si se dese agregar un item pero este ya existe dentro del objeto automaticamente lo ingnorará, ya que los sets solo pueden contener valores únicos.

 

También puede inicializar Sets con un Array de valores. Si hay valores duplicados en la matriz, se eliminarán del Set.

// Inicializando un objeto Set con un  objeto Array
const set = new Set(['Beethoven', 'Mozart', 'Chopin', 'Chopin'])

console.log(set); // => Set(3) {"Beethoven", "Mozart", "Chopin"}

 

En cambio, un Set se puede convertir en un Array con una línea de código:

const set = new Set(['Beethoven', 'Mozart', 'Chopin', 'Chopin']);

const arr = [...set];

console.log(arr); // => (3) ["Beethoven", "Mozart", "Chopin"]

 

Los sets tienen muchos de los métodos y las propiedades idénticos de los Map, incluidos delete()has()clear() y size.

// Eliminando un item
set.delete('Beethoven') // true

// Verificamos si exite un item dentro del objeto
set.has('Beethoven') // false

// Limpiar el objeto set
set.clear()

// Verificamos el tamaño del objeto
set.size // 0

Tenga en cuenta que los sets no tienen una una forma de acceder a un valor por medio de una clave o un índice, como Map.get(key) o arr[index].

Cuando utilizar un Set

Los Set son un elemento adicional útil para su juego de herramientas de JavaScript, en particular para trabajar con valores duplicados en los datos.

En una sola línea, podemos crear un nuevo Array sin los valores duplicados de un Array que sí los tiene.

const uniqueArray = [ ...new Set([1, 1, 2, 2, 2, 3])] // (3) [1, 2, 3];

console.log(uniqueArray); // (3) [1, 2, 3]

Un Set se puede usar para encontrar la unión, intersección y diferencia entre dos conjuntos de datos. Sin embargo, los Array tienen una ventaja importante respecto de los Set para la manipulación adicional de los datos debido a los métodos sort()map()filter() y reduce(), y también compatibilidad directa con los métodos JSON.

Agregar comentario