Destructure 解构赋值

# Destructure 解构赋值

解构赋值支持所有可遍历对象

# 数组的解构赋值

// 简单解构赋值
const arr = ['hello','world','say','Hi']
let [first,second,...last] = arr;
console.log(first, second) // hello world

// 剩余数据获取
console.log(last) // ['say','Hi']

// 跳过不需要的数据
const str = 'abcd'
let [f1,,f2] = str;
console.log(f1,f2) // a c

// 可遍历对象解构赋值
const s = new Set([1,2,3,4])
let [s1,,s3] = s;
console.log(s1,s3) // 1 3

// 可以给对象的属性赋值
let obj = {a:1,b:2,c:3}
[obj.a,obj.b] = ['a','b']
console.log(obj) // {a:'a',b:'b'b,c:3}

// 循环体解构赋值
for(let [k,v] of Object.entries(obj)){
  console.log(k,v)
}

# 对象的解构赋值

// 获取对象属性值
const obj = {a:1,b:2,c:3}
let {a,b:b1} = obj
console.log(a,b1) // 1 2

// 设置默认值
let {a,d = 10} = obj
console.log(a,d) // 1 10

// 获取剩余数据
let {a,...last} = obj
console.log(a,last) // 1 {b:2,c:3}

// 嵌套属性获取
const obj = {
  a:1,
  b:{
    c:2,
    d:{
      e:3
    }
  }
}
let {a,b:{d:{e:e1}}} = obj
console.log(a,e1) // 1 3