Destructuring assignment is a feature introduced in ECMAScript 6 (ES6) which allows developers to extract values from objects and arrays and assign them to variables.
It’s a convenient way of extracting data from complex data structures, and it can significantly reduce the amount of code required for tasks like data manipulation and variable assignment.
In JavaScript, destructuring can be used with arrays, objects, and other iterable structures like Maps and Sets. It works by using pattern matching to extract values from the structure being destructured.
Let’s take a look at some examples to see how it works.
Array destructuring:
Consider the following code:
const arr = [1, 2, 3];
const [a, b, c] = arr;
In this example, we’re using destructuring to assign the values from the array arr
to the variables a
, b
, and c
. This is equivalent to writing:
const a = arr[0];
const b = arr[1];
const c = arr[2];
Object destructuring:
Destructuring can also be used with objects.
Here is an example:
const obj = { x: 1, y: 2, z: 3 };
const { x, y, z } = obj;
In this example, we’re using destructuring to assign the values of the properties x
, y
, and z
from the object obj
to the variables x
, y
, and z
. This is equivalent to writing:
const x = obj.x;
const y = obj.y;
const z = obj.z;
Destructuring can also be used to assign object properties to variables with different names.
Here’s an example:
const obj = { x: 1, y: 2, z: 3 };
const { x: a, y: b, z: c } = obj;
In this example, we’re using destructuring to assign the values of the properties x
, y
, and z
from the object obj
to the variables a
, b
, and c
, respectively. This is equivalent to writing:
const a = obj.x;
const b = obj.y;
const c = obj.z;
Nested destructuring:
Destructuring can also be used with nested data structures.
Here’s an example:
const obj = { x: 1, y: { z: 2 } };
const {
x,
y: { z },
} = obj;
In this example, we’re using destructuring to assign the values of the properties x
and z
from the object obj
to the variables x
and z
, respectively. This is equivalent to writing:
const x = obj.x;
const z = obj.y.z;
Default values:
Destructuring also allows developers to provide default values for variables.
Here’s an example:
const arr = [1];
const [a, b = 2] = arr;
In this example, we’re using destructuring to assign the value 1
from the array arr
to the variable a
, and the default value 2
to the variable b
if there is no second element in the array. This is equivalent to writing:
const a = arr[0];
const b = arr[1] || 2;
Rest syntax:
Destructuring also supports the use of the rest syntax (...
).
Here’s an example:
const arr = [1, 2, 3];
const [a, ...rest] = arr;
In this example, we’re using destructuring to assign the value 1
from the array arr
to the variable a
, and the remaining values of the array to the variable rest
. This is equivalent to writing:
const a = arr[0];
const rest = arr.slice(1);
The rest syntax can also be used with object destructuring.
Here’s an example:
const obj = { x: 1, y: 2, z: 3 };
const { x, ...rest } = obj;
In this example, we’re using destructuring to assign the value 1
from the object obj
to the variable x
, and the remaining properties of the object to the variable rest
. This is equivalent to writing:
const x = obj.x;
const rest = { y: obj.y, z: obj.z };
Computed property names:
Destructuring also supports the use of computed property names. Here’s an example:
const obj = { x: 1 };
const propName = "x";
const { [propName]: a } = obj;
In this example, we’re using destructuring to assign the value 1
from the object obj
to the variable a
, using the computed property name propName
. This is equivalent to writing:
const a = obj[propName];
Thank you for reading, and let’s have conversation with each other
Thank you for reading my article. Let’s have conversation on Twitter and LinkedIn by connecting.