Sets en javascript

Luis Aguilar
4 min readAug 17, 2018

Introducción

Comenzaremos hablando que son los sets y que operaciones podemos realizar con ellos. Trararé de explicar los conceptos e implementaciones de forma corta para no alargar el contenido.

¿Qué son los sets?

Son colecciones de datos únicos, esto quiere decir que una colección no puede tener dos o más valores repetidos.

Definiendo un set

Para definir un set en javascript solo necesitamos llamar al constructor de esta forma:

Declarando un set sin especificar una colección.

En la parte de arriba se puede observar como declarar un set vacío, también podemos definir el un set con la colección desde su instancia, el set recibe como parámetro un iterable, por ejemplo, un array, string o incluso otro set.

Declarando sets especificando la colección.

Convirtiendo un set en array

Es posible convertir un set en un array, utilizando el operador de propagación (spread operator) o usando el método from del objeto Array.

Propiedades y métodos

El objeto set contiene los siguientes métodos y propiedades:

Propidedad

  • size (devuelve el tamaño de la colección)

Métodos

  • add (agrega un nuevo elemento a la colección)
  • has (devuelve true si un elemento existe en la colección)
  • delete (elimina un elemento en la colección)
  • clear (limpia la colección)
  • values (devuelve un iterable con los valores de la colección)
  • keys (devuelve un iterable con las claves de la colección)
  • entries (devuelve un iterable con las claves/valores de la colección)
  • forEach (recibe un callback que devuelve cada elemento de la colección)

A continuación algunos ejemplos de uso de los miembros de objeto set:

Iterables

Antes de continuar con los métodos restantes (values, keys, entries y forEach), debo mencionar que en los sets no son como los arrays. Los sets no contienen índices o posiciones, la clave de un elemento en el set es igual a su valor, por lo tanto los métodos keys() y values() devolveran el mismo resultado. De igual manera pondré los ejemplos para entenderlo mejor.

Operaciones con sets

Si alguna vez en la escuela viste “Teoría de conjuntos” en donde realizabas operaciones como unión, intersección, diferencia, etc. Son exactamente las mismas operaciones que se realizan con los sets, y si no te suena familiar, vamos a realizar algunas de las operaciones más comunes a continuación.

Unión

Como su nombre lo dice, es la unión de 2 o más colecciones sin repetir elementos en caso de que un mismo valor se encuentre en ambas colecciones, por ejemplo, si tenemos una colección A con los valores 1,2,3 y tenemos una colección B con los valores 2,3,4, el resultado de la unión de ambas colecciones sería: 1,2,3,4; los valores 2 y 3 se encuentran en ambas colecciones pero no se repiten los valores.

Implementación en código para obtener la unión:

Intersección

Todos los elementos en común que tienen las colecciones, como en el ejemplo anterior (A y B) y con los mismos valores, la intersección de A y B sería: 2,3; los elementos existen en ambas colecciones.

Implementación en código para obtener la intersección:

Diferencia

Es el conjunto de elementos que no existen en otros conjuntos, por ejemplo, la diferencia que tendría A de B (A-B) sería: 1, en pocas palabras, todos los elementos de A que no corresponden a B. La diferencia que tendría B de A (B-A) sería: 4.

Implementación en código para obtener la diferencia:

Conclusión

Los sets son útiles para almacenar datos únicos y realizar operaciones de comprobación, verificando si existe algún elemento en la colección y devolver una nueva colección con dichas operaciones, ya que los sets no contienen índices para obtener un único elemento, no es posible actualizar algún elemento de la colección como con los arrays.

--

--

Luis Aguilar

Algorithms, Angular, Typescript, JavaScript, Rust 💻 | Site: https://insomniocode.com | GitHub: https://github.com/Lugriz 🐈🐙 | youtube: Insomniocode 🎬