DEV Community

Barrios Freddy
Barrios Freddy

Posted on • Edited on

Object destructuring assignment

The destructuring assignment syntax is a JavaScript expression that makes it possible to unpack values from arrays, or properties from objects. In this case, we are going to see how destructuring works for objects.

const user = {
  userName: 'fbarrios',
  firstName: 'Freddy',
  lastName: 'Barrios',
  address: {
    street: '52',
    zipcode: '110007',
}

const { firstName } = user
console.log(firstName); // Freddy

Enter fullscreen mode Exit fullscreen mode

This is the same as…

const firstName = user.firstName
Enter fullscreen mode Exit fullscreen mode

It is possible to set default values, in case the property doesn’t exist or is undefined.

const { phone = '0000000' } = user
console.log(phone) // 0000000
Enter fullscreen mode Exit fullscreen mode

A property can be renamed when it’s destructured.

const { username: displayName } = user
console.log(displayName); // Freddy
Enter fullscreen mode Exit fullscreen mode

You can rename and set a default value for a property

const { phone: phoneNumber = '0000000' } = user
console.log(phoneNumber) // 0000000
Enter fullscreen mode Exit fullscreen mode

When the object has another one nested it’s destructured in the following way

let { address: { street } } = user
console.log(street) // 52
Enter fullscreen mode Exit fullscreen mode

Destructuring can be used with the arguments of a function

function fullname({firstName, lastName}) {
  return `${firstName} ${lastName}`;
}

console.log(fullName(user)); // Freddy Barrios
Enter fullscreen mode Exit fullscreen mode

Computed property names can be used with the destructuring assignment.

const key = 'username'
const { [key] } = user
Enter fullscreen mode Exit fullscreen mode

Rest operator in object destructuring

This operator (...) collects all properties that weren’t picked off during object destructuring

const { address, …restProperties } = user
console.log(address);
/*
{
  street: '52',
  zipcode: '110007',
}
*/ 
console.log(restProperties); /
{
  userName: 'fbarrios',
  firstName: 'Freddy',
  lastName: 'Barrios',
}
*/
Enter fullscreen mode Exit fullscreen mode

As you can see, object destructuring is very useful and gives us another way to write better code.

Top comments (0)