¿Alguna vez te has preguntado si existe en JavaScript un elemento más eficiente para validar una colección de datos? Pues si existe y se llama “Set“. En este artículo te mostraré cómo utilizarlo.
¿Qué es un Set?
Es una colección optimizada y muy efectiva para almacenar valores únicos de cualquier tipo. Es decir, la podemos utilizar para guardar datos o banderas que utilizaremos en la lógica de nuestros programas. Si no te quedó muy claro esto, no te preocupes y sigue leyendo.
Cómo definir un Set
Un Set se forma a partir de una colección de datos (como un arreglo), aunque luego podremos seguir anexando información siempre y cuando los valores que agreguemos sean únicos. Es decir, que no se repitan. Considera el siguiente ejemplo:
var coleccion1 = new Set(); var coleccion2 = new Set([1, 2, 3, 4]); var coleccion3 = new Set(['alfa', 'beta', 'etc']);
Observa que puedo agregar valores iniciales a la colección, pero esto no es obligatorio.
Cómo agregar valores al Set
Agregamos nuevos valores utilizando el método “add“. Observa el siguiente ejemplo:
coleccion1.add('gato'); coleccion1.add(5).add(10);
Cómo recuperar un valor
Aquí es donde se pone extraño, porque no podemos recuperar valores, solo podemos verificar si existe un valor utilizando el método “has“.
Considera el siguiente ejemplo: necesito llevar a cabo una tarea, pero solo si el empleado tiene un permiso determinado. Para lograrlo podría hacer algo como lo siguiente:
// rutina que provee la información del empleado var empleado = obtenerEmpleado(); var permisos = empleado.permisos; if (permisos.has('administrador')) { // si tiene el permiso, afecta los saldos de un cliente afectarSaldos(); }
La rutina “obtenerEmpleado” no importa en este momento, digamos que me devuelve los datos del empleado que está utilizando el sistema. Como parte de los datos que recupero, está una colección de tipo Set que se llama “permisos“. En este ejemplo verifiqué si la colección contiene el valor “administrador” y de ser así, ejecuté una rutina que se llama “afectarSaldos“.
Pero supongamos que por alguna razón necesito recuperar un valor de esta colección, entonces ¿cómo le hago para recuperarlo si no hay un método para esto?
// recuperamos el primer permiso en la colección var permiso = [...permisos][0];
Te presento a nuestro amigo “…” (tres puntos), cuyo trabajo es descomponer colecciones. En este ejemplo está tomando la colección de permisos y la está convirtiendo en un arreglo. Observa que para que funcione debemos encerrar la colección entre las llaves cuadradas. Luego podemos acceder a los elementos como en cualquier arreglo ordinario.
Cómo recorrer los elementos en el Set
Recorrer el Set es muy sencillo, ya que es un iterador nativo. Considera el siguiente ejemplo:
for (let permiso of permisos) { console.log(pemiso); }
Observa que necesitamos usar “let” y “of” para que esto funcione. Este código hace que obtengamos una iteración para cada elemento en el Set, y cada valor se colocará en la variable “permiso“.
Cómo eliminar un elemento del Set
Eliminar valores también es muy sencillo, para esto utilizamos el método “delete“. Considera el siguiente ejemplo:
permisos.delete('administrador');
El empleado ya no es administrador. Probablemente se lo merece por pasarse el día en Facebook.
Más información
Puedes consultar la guía en MDN sobre Sets para obtener información más detallada, o bien puedes dejarme una pregunta en la sección de comentarios y ampliaré el tema con mis respuestas.
Gracias por venir, nos leemos en el siguiente artículo.
Deja un comentario