Destructuring assignments were introduced in JavaScript as part of
In destructuring, the left-hand side of the assignment operator contains variable(s) that will store the destructured values. In contrast, the right-hand side has the array or object, which is destructured.
If individual elements of an array need to be stored independently, it can be cumbersome to access each element with the standard method.
Instead, the following method can be used.
function nextFour(num){return [num, num+1, num+2, num+3, num+4]}let result = nextFour(3);console.log(result);console.log(result[0], result[2]); //accessing individual elements[a, b, c] = result; //destructuring the result arrayconsole.log(a,b,c);
In the code above, the nextFour
function returns an array that contains the next four numbers starting from the number passed as an argument.
In line 8, the elements of the resulting array are accessed individually using indices.
However, line 10 presents a way to destructure the array. Since only three variables were provided, only the first three elements were parsed to a
, b
, and c
.
result = [3, 4, 5, 6, 7];[a, b, c, ...x] = result; //using the rest operatorconsole.log("a: ", a);console.log("b: ", b);console.log("c: ", c);console.log("x: ", x);
The code above provides more examples of how to destructure arrays.
When only certain elements need to be stored separately and the rest can be grouped together as part of a list, the rest operator (...
) is used.
In the example in line 3, variables a
, b
and c
store the elements at array indices 0, 1, and 2 respectively, and the variable x
stores the remaining list of numbers.
[num1, num2, num3, num4] = [10, 20, 30]; // using more variables than requiredconsole.log("num1: ", num1)console.log("num2: ", num2)console.log("num3: ", num3)console.log("num4: ", num4)
In this example, the number of items to unpack from the array was fewer than the number of variables present.
In such a case, the remaining variable, num4
, is not assigned a value from the array and is assigned undefined
.
array = [1, 2, 3, 4, 5]const [a, , b, ,c] = array;console.log("a: ", a)console.log("b: ", b)console.log("c: ", c)
This example shows how certain values of an array can be ignored using ,
.
Objects are destructured in a manner similar to arrays.
const student = {id: 23,year: "senior",};const {id, year} = student;console.log(id);console.log(year);
In the code above, the object student
is parsed to the two corresponding variable names.
const obj = {x: 100, y: true, z: "hello"};const {x: aa, y: bb, z: cc} = obj;console.log(aa);console.log(bb);console.log(cc)
In this example, the object, obj
, is destructured and the variable values are replaced such that aa
, bb
and cc
refer to the values from obj
.
Free Resources