数组和对象的解构赋值是ES6中新增的一种语法,可以快速、方便地从数组或对象中提取出需要的元素,然后赋值给变量。
数组解构赋值
数组解构赋值的语法格式为:
let [变量1, 变量2, ..., 变量n] = 数组;
其中,方括号表示数组,等号左边的方括号表示解构赋值的语法,等号右边的数组是要被解构的数组,变量1到变量n是要接收数组中的元素的变量名。
举个例子:
let arr = [1, 2, 3];
let [a, b, c] = arr;
console.log(a); // 输出1
console.log(b); // 输出2
console.log(c); // 输出3
对象解构赋值
对象解构赋值的语法格式为:
let {属性1: 变量1, 属性2: 变量2, ..., 属性n: 变量n} = 对象;
其中,花括号表示对象,等号左边的花括号表示解构赋值的语法,等号右边的对象是要被解构的对象,属性1到属性n是要接收对象中的属性名,变量1到变量n是要接收对象中属性的值的变量名。
举个例子:
let obj = {a: 1, b: 2, c: 3};
let {a, b, c} = obj;
console.log(a); // 输出1
console.log(b); // 输出2
console.log(c); // 输出3
解构赋值还可以设置默认值,当要解构的对象或数组中没有该属性或元素时,就会使用默认值。
举个例子:
let obj = {a: 1, b: 2};
let {a = 0, b = 0, c = 0} = obj;
console.log(a); // 输出1
console.log(b); // 输出2
console.log(c); // 输出0
在解构赋值中,可以通过使用...运算符来获取数组或对象中剩余的元素,生成一个新的数组或对象。
举个例子:
let arr = [1, 2, 3, 4];
let [a, b, ...rest] = arr;
console.log(a); // 输出1
console.log(b); // 输出2
console.log(rest); // 输出[3, 4]
let obj = {a: 1, b: 2, c: 3, d: 4};
let {a, b, ...rest} = obj;
console.log(a); // 输出1
console.log(b); // 输出2
console.log(rest); // 输出{c: 3, d: 4}