55
El primo del Array: ¿Que es un Set?
Un set es un tipo de objeto incluido en ES2015 que tiene semejanzas con un array:
Pero también diferencias:
Un Set es un tipo de objeto, por lo que su sintaxis es la misma que la de un constructor:
const unSetVacío = new Set();
Si queremos inicializar nuestro Set con valores, deberemos pasar como argumento un array
const redesSociales = new Set(["Facebook", "Twitter", "Fotolog"]);
El objeto Set tiene metodos propios para agregar, borrar y comprobar datos
Para agregar datos a un Set, contamos con el método
.add()
redesSociales.add("Instagram");
redesSociales.add("MySpace");
console.log(redesSociales); // Set ['Facebook', 'Twitter', 'Fotolog', 'Instagram', 'MySpace']
¿Qué pasa si por error duplicamos un dato? ¡Absolutamente nada! Los Set solo permiten valores únicos
redesSociales.add("Facebook");
console.log(redesSociales); // Set ['Facebook', 'Twitter', 'Fotolog', 'Instagram', 'MySpace']
Para eliminar datos de un Set, contamos con el método
.delete()
. Si retornamos o hacemos console.log
al usar este metodo, nos retornará un valor booleano para avisarnos de que pudo borrar el dato que le dijimos// RIP Fotolog y MySpace
redesSociales.delete("Fotolog"); // true
redesSociales.delete("MySpace"); // true
console.log(redesSociales); // Set ['Facebook', 'Twitter', 'Instagram']
//Intentemos borrarlos otra vez, nos retornará false ya que no existen más
redesSociales.delete("Fotolog"); // false
redesSociales.delete("MySpace"); // false
Para comprobar si existe un dato dentro de un Set, usaremos el método
.has()
que nos retornará un valor booleanoredesSociales.has("Instagram"); // true
redesSociales.has("Fotolog"); // false
redesSociales.has("LinkedIn"); // false
Para saber qué tamaño tiene un Set, contamos con la propiedad
.size
(¡¿Por qué no le pusieron .length
como a los Arrays?!)redesSociales.size; // 3
Un Set puede ser iterable casi como cualquier objeto, por ejemplo, con un
for..of
for (let redSocial of redesSociales) {
console.log(redSocial);
}
También podemos hacer uso de los métodos
.values()
o .keys()
que retornan un nuevo objeto iterable con los datos del Set (Sí, ambos métodos hacen lo mismo).Si tenes necesidad de transformar tu Set en un Array, podemos usar dos métodos:
.from()
del objeto Array
const redesSocialesArray = Array.from(redesSociales);
const redesSocialesSpread = [...redesSociales];
Hoy aprendimos qué es un Set, cómo modificarlo y cómo convertirlo en Array. Hay más métodos que no te conté para no hacerla muy larga. Al final te voy a dejar la documentación que utilicé para poder escribir esto. Te invito a que la leas, investigues, juegues y practiques.
Fuentes:
55