Select Page
JavaScript ES6+ : Destructuring
Jayman Pandya
Apr 16, 2020

Destructuring allows us to extract data from Objects, Arrays, Maps & Sets. It allows you to write DRY code.

Object Destructuring

You will have to use “{}” (curly braces) for Object Destructuring.

const facilityDetails = {
    name: 'Swimming Pool',
    capacity: 25,
    canBeOverbookBy: 10,
    shut: 'Sunday',
    dynamic: {
        booking: true,
        time: false
    },
    safeForKids: true
}

// Single Level Destructuring
const {name, capacity, canBeOverbookBy} = facilityDetails;

console.log(`The ${name} has the capacity of ${capacity} guests and can be overbooked by ${canBeOverbookBy} guests.`);

// Multi Level Destructuring
const {booking, time} = facilityDetails.dynamic;

console.log(`The ${name} has the capacity of ${capacity} guests and can be overbooked by ${canBeOverbookBy} guests. This facility ${booking===true ? `has` : `does not have`} booking at dynamic start time and ${time===true ? `has` : `does not have`} booking of dynamic duration.`);

// Renaming variables while Destructuring
const { shut:closedOn } = facilityDetails;

console.log(`The ${name} has the capacity of ${capacity} guests and can be overbooked by ${canBeOverbookBy} guests. This facility ${booking===true ? `has` : `does not have`} booking at dynamic start time and ${time===true ? `has` : `does not have`} booking of dynamic duration. This facility is closed for maintenance on ${closedOn}.`);

// Assigning default value during Destructuring
const {safeForKids, isOpenAir = true} = facilityDetails;

console.log(`${name} is ${isOpenAir === true ? `an Open Air` : `not an Open Air`} & ${safeForKids === true ? `Safe for Kids` : `Not Safe for Kids`} facility.`);

Array Destructuring

You will have to use “[]” (square brackets) for Object Destructuring.

//Destructuring an Array
//name, capacity, canBeOverbookBy, shut, dynamic (booking, time), safeForKids
const facilityDetails = ['Swimming Pool', 25, 10, 'Sunday', [true, false], true];
const [name, capacity, canBeOverbookBy] = facilityDetails;

console.log(`The ${name} has the capacity of ${capacity} guests and can be overbooked by ${canBeOverbookBy} guests.`);

//Destructuring a nested array
const [booking, time] = facilityDetails[4];

console.log(`The ${name} has the capacity of ${capacity} guests and can be overbooked by ${canBeOverbookBy} guests. This facility ${booking===true ? `has` : `does not have`} booking at dynamic start time and ${time===true ? `has` : `does not have`} booking of dynamic duration.`);

// Converting a comma separated string to an Array and destructuring it after that
const facilityDetailsString = 'Sunday, true';
const [shut, safeForKids] = facilityDetailsString.split(',');

console.log(`This facility is ${safeForKids===true ? `Safe for Kids` : `not Safe for Kids`} and is closed on ${shut}.`);

// Exploring ...rest parameter
const kidsUsingTheFacilityRightNow = ['Megan', 'Roy', 'James', 'Louis'];
const [child, ...others] = kidsUsingTheFacilityRightNow;

console.log(child, ...others); // Will print Megan Roy James Louis
console.log(child); // Will print Megan
console.log(...others); // Will print Roy James Louis

Peace ✌️

Let's Talk

If you liked what you have seen, then let’s connect and make something amazing together.

Email me at converse@jaymanpandya.com or send a DM on my twitter @jaymanpandya