Introduction
Object Destructuring is an ES6 feature that allows us to extract one or many properties of an array or an object with a concise syntax. We can read an entire object structure in a single instruction, that makes it easy to read. More features are also packed with object destructuring : I will talk about some of them in this post.
Extract a property from an object
Let's take the following object:
const user = { name: 'Estelle', login: 'estellepicq', role: 'admin', job: 'dev' };
If we wanted to extract name and login from the user object in order to assign them in new variables, in a pre-ES6 environment, we would write:
var name = user.name; var login = user.login; console.log(name); // ‘Estelle’ console.log(login); // ‘estellepicq’
With destructuring, we can write:
const { name, login } = user; console.log(name); // ‘Estelle’ console.log(login); // ‘estellepicq’
That way, we can extract only the wanted properties, in a single line of code.
If the property does not exist, the new variable will be undefined:
const { name, login, age } = user; console.log(name); // 'Estelle' console.log(login); // 'estellepicq' console.log(age); // undefined
It works the same for arrays:
const fruits = ['apple', 'banana', 'watermelon', 'papaya']; const [ firstFruit, secondFruit ] = fruits; console.log(firstFruit); // 'apple' console.log(secondFruit); // 'banana'
Rename a property
Let's take the previous example and say that we want to extract the information contained in login, and assign it to a new variable username:
const { login: username } = user; console.log(username); // ‘estellepicq’
We gave an alias to login and created a new variable username which contain the information.
Give a default value
We saw that if the property was missing, the new variable was undefined. If needed, we can assign a default value.
const { age = 20 } = user; console.log(age); // 20
Conclusion
Object destructuring is a powerful feature allowing us to extract properties from an object and concisely assign them to variables, and I encourage you to use it!
Sources:
https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/
https://davidwalsh.name/destructuring-alias
https://dmitripavlutin.com/javascript-object-destructuring/