La desestructuración de arrays y objetos
Suena terrible. Desestructuración. Pero en realidad es algo muy sencillo y aunque al principio puede no parecer muy útil, provee una forma de escribir código que resulta más rápida y legible. Y si has leído algún otro artículo mío, sabrás que para mí la legibilidad no sólo es importante: es lo más importante.
- ¿Qué significa desestructurar?
- ¿Cómo se desestructura un array?
- ¿Cómo se desestructura un objeto?
- El parámetro «rest»
- Y ahora todo junto
¿Qué significa desestructurar?
Pues es muy sencillo. Básicamente es extraer posiciones o propiedades de un array o de un objeto respectivamente, para poder gestionarlo más cómodamente. Imagina que el array es la caja que ilustra el post – que no está puesta al azar aunque lo parezca – y quieres tener acceso a un disco en concreto así como mantener acceso al resto de discos y también a la colección al completo. Eso podrías hacerlo desestructurando.
¿Cómo se desestructura un array?
Imagina que tienes el array [1, 2, 3, 4]
. Imagina que quieres obtener el valor de la primera posición. Normalmente escribirías array[0]
y ya lo tendrías, y si quieres almacenarlo escribirías const primera = array[0];
. Desestructurando sería así:
¿Y para qué ibas a liarte con esto si no aportan nada nuevo y son cosas que ya podías hacer de formas que ya conocías? No te estreses: ambas opciones conviven. Para mí, la ventaja de poder escribirlo de diferentes formas es fundamentalmente que en ocasiones ayuda a generar un código más legible. En efecto, no te van a permitir hacer nada nuevo, pero sí ser más elegante. Puedes hacer cosas complejas de una forma tan sencilla que a veces parece magia.
¿Cómo se desestructura un objeto?
Muy parecido a cómo se hace con un array. Si en el primero usamos los caracteres []
, en el objeto usamos {}
. Además obviamente en lugar de utilizar posiciones utilizamos nombres, razón por la cual es más entendible y se suele aprovechar más en objetos que en arrays.
Imagina que tienes el siguiente objeto:
Imagina ahora que quieres guardar el nombre en una constante, podrías hacerlo de estas dos formas:
Esas dos lineas se comportan exactamente igual, no hay una ventaja aparente en ninguna de las dos. Pero ¿qué pasaría si quieres hacer lo mismo con dos valores?
En el segundo ejemplo, pese a que el método helloDog
recibe un objeto completo, sólo está utilizando una propiedad. El código del método está de hecho «desconociendo» el resto, algo interesante en cuestiones de encapsulación.
El parámetro «rest»
El parámetro rest
es una parte muy importante del la desestructuración. Lo he separado en un punto a parte en lugar de explicarlo en la parte de los arrays o los objetos porque es algo similar en los dos casos. Y de igual forma también es un concepto sencillo.
La traducción de rest
es resto, y para eso es básicamente para lo que sirve, para guardar en esa constante el valor del resto. Unos ejemplos rápidos:
* Incluso podría usarlos en los nombres de las propiedades.
Y ahora todo junto
Algo sencillo, un objeto como los anteriores, un método que desestructura el parámetro y retorna un array con una respuesta simple y otra compleja, para poder desestructurar la respuesta.
Espero que el concepto se haya entendido y si no acabas de ver las ventajas, te animo a que lo pruebes poco a poco y que empieces a integrarlo en lugares concretos que controles y conozcas bien.
Photo by Artificial Photography on Unsplash.