JavaScript 2015 (IV). Conjuntos y desestructuración.

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

Como hemos venido viendo en los artículos anteriores, en JavaScript 6 existen muchas alternativas a los arreglos. Hasta la llegada de esta versión, contábamos con las matrices tradicionales de toda la vida, y para de contar. En JS6 contamos con otras opciones que nos permiten mayor flexibilidad a la hora de tratar con datos. En este artículo vamos a conocer los conjuntos y las desestructuraciones. A pesar de sus rimbombantes nombres, verás que son dos técnicas extremadamente simples de manejar, heredadas, como las anteriores, de otros lenguajes de alto nivel.

Con este artículo dejaremos sentadas las bases para seguir profundizando en el conocimiento de la nueva versión de JavaScript.

CONJUNTOS

Los conjuntos son unos arreglos, es decir, colecciones de datos, que tienen dos peculiaridades.

  • La primera es que los elementos, simplemente, están ahí. Podremos listarlos, comprobar la existencias de uno en concreto, eliminarlos, pero no tienen un nombre, ni se pueden referenciar mediante un índice o de otra manera que no sea refiriéndonos al propio elemento. Esto, que parece una limitación de prestaciones, es en realidad tremendamente útil en determiandas circunstancias. Cuando debemos comprobar la existencia de un elemento en un conjunto, este sistema es más rápido que las matrices u otros arreglos.
  • La segunda particularidad que presentan los conjuntos es que no puede haber elementos repetidos. Si a un conjunto le intentamos añadir un elemento que ya existe, simplemente no se añade, pero no provoca un error de ejecución, ni interrumpe o altera la misma de ningún modo.

Observa el siguiente listado:

Lo primero que hacemos para crear un conjunto es instaciar un objeto de la clase Set(), como vemos en la línea 10.

Podemos añadir elementos empleando el método add(), que recibe, cómo argumento, una cadena o variable que la contiene, que se añadirá al conjunto. Los usos del método add() pueden ser individuales, como vemos en las líneas 11 y 12, o encadenados, si queremos añadir más de un elemento, como vemos en la línea 13.

La salida, en la consola de JavaScript del navegador, de este listado, es la siguiente:

Set {"Pedro", "Ángel", "María", "Laura", "Carla"}

Cómo puedes comprobar, en la línea 14 hemos intentado agregar un elemento que ya existe. JavaScript, simplemente, ha ignorado esta línea. Insisto: en los conjuntos no hay nunca elementos repetidos.

Los conjuntos tienen cuatro métodos más, que debemos conocer:

El método has(). Recibe, como argumento, un elemento que pensamos que pueda existir en el conjunto. Devolverá true, si el elemento existe, o false, si no existe. Este método es sensible a mayúsculas y minúsculas, así que si el elemento que buscamos no está escrito en el método igual que se incluyó en el conjunto, no lo reconocerá, y devolverá false.

La propiedad size. Es una propiedad (no ún método) y contiene un valor numérico que se refiere a la cantidad de elementos que tiene el conjunto.

El método delete(). Recibe, cómo argumento, un elemento del conjunto, y lo elimina del mismo. Si el elemento no existe, devuelve false. Si existe y se ha podido eliminar, devuelve true. Al igual que has(), es sensible a mayúsculas y minúsculas.

El método forEach(). Permite recorrer secuencialmente los elementos de un conjunto. Recibe, como argumento, una referencia al elemento en curso en cada iteración, y una función a realizar con dicho elemento.

Veamos un ejemplo completo a continuación:

El resultado en consola es el siguiente:

Set {"Pedro", "Ángel", "María", "Laura", "Carla"}
conjuntos.htm:16 Existe el elemento 'Laura':  true
conjuntos.htm:17 Existe el elemento 'laura':  false
conjuntos.htm:19 El tamaño del conjunto es de  5  elementos.
conjuntos.htm:21 Borramos el elemento 'Laura':  true
conjuntos.htm:23 Intentamos borrar el elemento 'ángel':  false
conjuntos.htm:25 Un elemento del conjunto:  Pedro
conjuntos.htm:25 Un elemento del conjunto:  Ángel
conjuntos.htm:25 Un elemento del conjunto:  María
conjuntos.htm:25 Un elemento del conjunto:  Carla

Cómo ves, si sigues el código con los comentarios, es muy fácil emplear los conjuntos.

DESESTRUCTURACIÓN

Seguro que te encuentras familiarizado con la forma en la que, tradicionalmente, se podía asignar un mismo valor a dos variables. Observa el siguiente código:

En la línea 10 ves como le asignamos el mismo valor a más de una variable. El resultado en la página es el siguiente:

El nombre 1 es: Pedro
El nombre 2 es: Pedro

El nuevo concepto de desestructuración va un paso más allá. Nos permite asignar, a más de una variable, sendos valores no necesariamente iguales. Observa el siguiente código:

El resultado, en la página, es el siguiente:

El nombre 1 es: Pedro
El nombre 2 es: Rosa

Sin embargo, este modo de hacer las asignaciones parece (y lo es, en la mayoría de los casos) un atraso, más que una evolución. Cómo ves, nos obliga a repetir los nombres de las variables a la izquierda y a la derecha del operador de asignación, aparte del empleo de llaves, etc. Se genera un código menos optimizado y más hiriente a la vista (al menos, así me siento yo, cuando veo esta sintaxis).

Donde sí se nota que la desestructuración optimiza las asignaciones es cuando se emplean arreglos para asignar valores a variables. Observa el siguiente código:

Cómo ves en la línea 10, se han englobado los nombres de las variables en un arreglo a la izquierda del operador de asignación. A la derecha de dicho operador se engloban los valores en un arreglo de tal modo que cada valor corresponda a una valriable, uno a uno. El resultado en pantalla lo vemos a continuación:

El nombre es: Pedro
Los apellidos son: García Muñoz
La edad es: 65 años.

Si el número de valores es menor que el de variables, las del final se quedarán sin valor, asumiendo undefined. Suponte que la línea 10 la hubiéramos escrito así:

var [nombre, apellidos, edad] = ["Pedro", "García Muñoz"];

Cómo ves, hay tres variables a la izquierda, pero sólo dos a la derecha. El resultado en pantalla es el siguiente:

El nombre es: Pedro
Los apellidos son: García Muñoz
La edad es: undefined años.

También puede darse el caso contrario: que el número de valores sea mayor que el de variables. En ese caso, los alores que no correspondan a ninguna variable, simplemente son ignorados.

     

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *