JavaScript > ES6 and Beyond > New Syntax and Features > Destructuring assignment
ES6 Destructuring: Object and Array Unpacking
Learn how to use ES6 destructuring to extract values from objects and arrays into distinct variables, simplifying your code and improving readability.
Basic Object Destructuring
Object destructuring allows you to extract specific properties from an object and assign them to variables with the same name. The syntax const { property1, property2 } = object;
creates variables property1
and property2
and assigns them the values of the corresponding properties from the object
.
// Sample object
const person = {
firstName: 'John',
lastName: 'Doe',
age: 30,
city: 'New York'
};
// Destructuring the object
const { firstName, lastName, age, city } = person;
console.log(firstName); // Output: John
console.log(lastName); // Output: Doe
console.log(age); // Output: 30
console.log(city); // Output: New York
Basic Array Destructuring
Array destructuring enables you to extract values from an array and assign them to variables. The syntax const [variable1, variable2] = array;
creates variables variable1
and variable2
and assigns them the values of the first and second elements of the array
respectively. You can skip elements using commas, like skipping the third element in the example.
// Sample array
const numbers = [1, 2, 3, 4, 5];
// Destructuring the array
const [first, second, , fourth] = numbers;
console.log(first); // Output: 1
console.log(second); // Output: 2
console.log(fourth); // Output: 4
Destructuring with Renaming
You can rename the extracted property while destructuring. The syntax const { oldName: newName } = object;
extracts the value of oldName
from the object
and assigns it to a new variable named newName
.
// Object with properties
const product = {
name: 'Laptop',
price: 1200
};
// Destructuring and renaming
const { name: productName, price: productPrice } = product;
console.log(productName); // Output: Laptop
console.log(productPrice); // Output: 1200
Destructuring with Default Values
You can provide default values for properties that might be missing in the object. If a property is not found in the object, the default value will be used. The syntax const { property = defaultValue } = object;
assigns defaultValue
to the variable property
if the property
is not present in the object
.
// Object with some missing properties
const config = {
host: 'localhost'
};
// Destructuring with default values
const { host, port = 8080 } = config;
console.log(host); // Output: localhost
console.log(port); // Output: 8080 (default value)
Nested Object Destructuring
Destructuring can be used with nested objects. You specify the path to the nested property within the destructuring pattern. In this example, address: { street, city }
extracts the street
and city
properties from the address
object, which is a property of the user
object.
// Nested object
const user = {
id: 1,
name: 'Alice',
address: {
street: '123 Main St',
city: 'Anytown'
}
};
// Nested destructuring
const { address: { street, city } } = user;
console.log(street); // Output: 123 Main St
console.log(city); // Output: Anytown
Real-Life Use Case: Function Parameters
Destructuring can be used in function parameters to extract specific properties from an object passed to the function. This improves code readability and reduces the need to access object properties using dot notation within the function body. This is very common with React components.
// Function using destructuring in parameters
function displayPerson({ firstName, lastName, age }) {
console.log(`Name: ${firstName} ${lastName}, Age: ${age}`);
}
const person = {
firstName: 'Bob',
lastName: 'Smith',
age: 42
};
displayPerson(person); // Output: Name: Bob Smith, Age: 42
Best Practices
Interview Tip
During technical interviews, be prepared to explain how destructuring works, its benefits (readability, conciseness), and demonstrate its use with objects, arrays, and nested structures. Be ready to discuss default values and renaming.
When to Use Them
Use destructuring when you need to extract specific values from objects or arrays and assign them to variables. It is particularly useful when working with complex data structures or when passing objects as function parameters.
Memory Footprint
Destructuring itself doesn't have a significant impact on memory footprint. It's simply a syntax for assigning values to variables. The memory used is the same as if you were assigning values using traditional property access (e.g., const firstName = person.firstName;
).
Alternatives
The alternative to destructuring is to access object properties or array elements directly using dot notation (e.g., object.property
) or index notation (e.g., array[index]
). Destructuring provides a more concise and readable way to achieve the same result.
Pros
Cons
FAQ
-
What happens if I try to destructure a property that doesn't exist in the object?
If you try to destructure a property that doesn't exist, the corresponding variable will be assigned the valueundefined
. You can avoid this by providing a default value using the=
operator during destructuring. -
Can I use destructuring with functions?
Yes, destructuring can be used with function parameters to extract specific properties from an object passed to the function. This improves code readability and reduces the need to access object properties using dot notation within the function body. -
Is destructuring supported in all browsers?
Destructuring is supported in all modern browsers. For older browsers, you may need to use a transpiler like Babel to convert the code to an older version of JavaScript.