解构

  • 解构赋值是对赋值运算符的扩展。
  • 是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。

一、数组模型的解构(Array)

let [a, b, c] = [1, 2, 3];

let [a, [[b], c]] = [1, [[2], 3]];

 let [a = 1b] = []// a = 1, b = undefined
 

  // 剩余运算符

 let [a, ...b] = [1, 2, 3]; //a = 1 //b = [2, 3]


  1. 左侧为解构目标
  2. 右侧为解构源
  3. 解构目标可以嵌套、忽略、设置默认值
  4. 除了匹配结果为undefined外,解构目标为其默认值。
  5. 解构目标和解构源都有值,解构源的值覆盖解构目标的默认值。

 

二、对象模型的解构(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'

  1. 赋值方式与组数赋值类似

三、计算

函数任意个参数之和:

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
    

      

 

posted @ 2019-11-08 10:29  安博主  阅读(308)  评论(0编辑  收藏  举报