对象解构
对象解构
它与数组解构类似,只是不是从数组中拉出值,而是从数组中拉出属性(或键)及其对应的值一个对象。
在解构对象时,我们使用键作为变量名。变量名称必须与对象的属性(或键)名称匹配。如果不匹配,则它会收到一个 undefined 值。这就是 JavaScript 知道我们想要分配对象的哪个属性的方式。
在对象解构中,值是通过键而不是位置(或索引)提取的。
首先,尝试使用以下示例了解对象解构中的基本赋值。
示例-简单赋值
const num = {x: 100, y: 200};
const {x, y} = num;
console.log(x); // 100
console.log(y); // 200
输出
让我们了解基本的对象解构赋值。
示例-基本对象解构赋值
const student = {name: 'Arun', position: 'First', rollno: '24'};
const {name, position, rollno} = student;
console.log(name); // Arun
console.log(position); // First
console.log(rollno); // 24
输出
对象解构和默认值
与数组解构一样,如果从对象中解压出来的值未定义,则可以为变量分配一个默认值.从下面的例子可以清楚地看出。
例子
const {x = 100, y = 200} = {x: 500};
console.log(x); // 500
console.log(y); // 200
在上例中,变量x 和y 具有默认值100 和200。然后,变量 x 被重新赋值为 500。但是变量 y 没有被重新赋值,所以它保留了它的原始值。因此,我们的输出不是 100 和 200,而是 500 和 200。
输出
分配新的变量名
我们可以分配一个与对象属性不同的名称的变量。您可以看到以下相同的插图:
示例
const num = {x: 100, y: 200};
const {x: new1, y: new2} = num;
console.log(new1); //100
console.log(new2); //200
在上面的例子中,我们将属性名称x和y分配给了一个局部变量,new1,和 >new2.
输出
无声明赋值
如果变量在声明时没有赋值,那么可以在解构时赋值。您可以看到以下相同的插图:
示例
let name, division;
({name, division} = {name: 'Anil', division: 'First'});
console.log(name); // Anil
console.log(division); // First
在上面的例子中,需要注意的是,在没有声明的情况下使用变量解构赋值时,必须在赋值语句周围使用括号()。否则,语法将无效。
输出
对象解构和rest运算符
通过在对象解构中使用rest运算符(...),我们可以将一个对象的所有剩余键放入一个新的对象变量中。
让我们试着用一个例子来理解它。
例子
let {a, b, ...args} = {a: 100, b: 200, c: 300, d: 400, e: 500}
console.log(a);
console.log(b);
console.log(args);
输出
100
200
{ c: 300, d: 400, e: 500 }
分配新的变量名并同时提供默认值
从对象中解压出来的属性可以分配给具有不同名称的变量。如果解压后的值为undefined,则为其分配默认值。
示例
const {a:num1=100, b:num2=200} = {a:300};
console.log(num1); //300
console.log(num2); //200
输出