- 解构赋值是对赋值运算符的扩展。
- 是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
一、数组模型的解构(Array)
let [a, b, c] = [1, 2, 3];
let [a, [[b], c]] = [1, [[2], 3]];
let [a = 1, b] = []; // a = 1, b = undefined
// 剩余运算符
let [a, ...b] = [1, 2, 3]; //a = 1 //b = [2, 3]
- 左侧为解构目标
- 右侧为解构源
- 解构目标可以嵌套、忽略、设置默认值
- 除了匹配结果为undefined外,解构目标为其默认值。
- 解构目标和解构源都有值,解构源的值覆盖解构目标的默认值。
二、对象模型的解构(Object)
let { foo, bar } = { foo: 'aaa', bar: 'bbb' }; // foo = 'aaa' // bar = 'bbb' let { baz : foo } = { baz : 'ddd' }; // foo = 'ddd'
// 剩余运算符
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}; // a = 10 // b = 20 // rest = {c: 30, d: 40}
// 解构默认值
let {a = 10, b = 5} = {a: 3}; // a = 3; b = 5;
let {a: aa = 10, b: bb = 5} = {a: 3}; // aa = 3; bb = 5;
// 嵌套
let obj = {p: ['hello', {y: 'world'}] }; let {p: [x, { y }] } = obj; // x = 'hello' // y = 'world'
- 赋值方式与组数赋值类似
三、计算
函数任意个参数之和:
function sum(...num){ var sumNum = 0; for(let i=0;i<num.length;i++){ sumNum += parseInt(num[i]) } console.log(sumNum) } sum(1,2,3) //6 sum(1,2,"3") //6 sum(1,3,"6和4") //10
参数之和
function Sum(...nums){ let sum = nums.reduce((x,y)=>{return x+y}) return sum }
- reduce()函数接收一个函数作为累加器
-
const arr = [1, 2, 3, 4, 5] const sum = arr.reduce((pre, item) => { return pre + item }, 0) console.log(sum) // 15