Unpacking de objetos anidados en Javascript

27/Sep/2017 JavaScript Deja un comentario

Ya hemos visto en un artículo cómo podemos realizar un unpacking de objetos con Javascript. En este caso vamos a ver cómo podemos hacer un unpacking de objetos anidados en Javascript. Y es que la complejidad del objeto puede ser aquella que queramos.

En este caso vamos a partir de un objeto anidado:

  1. var autor = {
  2. nombre: 'Santiago Posteguillo',
  3. libros: [
  4. {
  5. titulo: 'Africanus, el hijo del cónsul',
  6. trilogia:'Escipion'
  7. },
  8. {
  9. titulo: 'Las Legiones Malditas',
  10. trilogia:'Escipion'
  11. }
  12. ]
  13. }

Vemos que el objeto definido en Javascript contiene un array con objetos anidados. En este caso el objeto representar a un autor y los objetos anidados los libros que ha escrito.

Si queremos acceder a estos elementos mediante notación de objetos escribiremos mediante la estructura objeto.propiedad:

  1. console.log(autor.nombre);
  2. console.log(autor.libros[0].titulo);

Pero para manejar las variables de una forma más sencillas vamos a realizar un unpacking de objetos anidados en Javascript.

Para acceder a una propiedad que no esté anidada la estructura será:

  1. var {propiedad} = objeto;

Por ejemplo, si queremos obtener el nombre escribiremos:

  1. var {nombre} = autor;
  2. console.log(nombre);

En el caso que queramos acceder a una propiedad que esté anidada deberemos seguir la siguientes estructura:

  1. var {propiedad: {propiedad_anidada}} = objeto;

Y en el caso de que se encuentre dentro de un array, como es el caso del objeto autor será con el operador []:

  1. var {propiedad: [{propiedad_anidada}]} = objeto;

Así, para obtener el título del un libro escribiremos el siguiente código:

  1. var {libros: [{titulo}]} = autor;
  2. console.log(titulo);

De esta forma habremos conseguido realizar un unpacking de objetos anidados en Javascript.

Vídeos sobre Javascript


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*