数组和对象的解构赋值

224 阅读1分钟

一、数组解构

1.基本

let arr = [1, 2, 3]
let [a, b, c] = arr
console.log(a, b, c)//1 2 3

2.可嵌套

let arr = [1, [2, 3], [4, [5, 6]]]
let [a, [b, c], [d, [e, f]]] = arr
console.log(a, b, c, d, e, f)//1 2 3 4 5 6

3.可忽略

let arr = [1, [2, 3], [4, [5, 6]]]
let [a, , c] = arr
console.log(a, c)//1 [ 4, [ 5, 6 ] ]

4.不完全解构

let arr = [1, [2, 3], [4, [5, 6]]]
let [a, b] = arr
console.log(a, b)//1 [ 2, 3 ]

5.剩余运算符

let arr = [1, [2, 3], [4, [5, 6]]]
let [a, ...b] = arr
console.log(a, b)//1 [ [ 2, 3 ], [ 4, [ 5, 6 ] ] ]

6.解构默认值

let arr = []
let [a = 1, b, c = 3] = arr
console.log(a, b, c)//1 undefined 3

二、对象解构

1.基本

let obj = { a: 1, b: 2 }
let { a, b } = obj
console.log(a, b);//1 2

2.可嵌套

let obj = { a: 1, b: { c: 2, d: 3 } }
let { a, b: { c, d } } = obj
console.log(a, c, d);//1 2 3

3.可忽略

let obj = { a: 1, b: { c: 2, d: 3 } }
let { a, b: { d } } = obj
console.log(a, d);//1 3

4.不完全解构

let obj = { a: 1, b: 2, c: 3 }
let { a, b } = obj
console.log(a, b);//1 2

5.剩余运算符

let obj = { a: 1, b: 2, c: 3, d: 4  }
let { a, ...rest} = obj
console.log(a,rest);//1 { b: 2, c: 3, d: 4 }

6.解构默认值

let obj = { b: 2 }
let { a = 9, b } = obj
console.log(a, b);//9 2