ES6解构赋值

写vue或react项目,我们经常在接收到数据的时候,需要对数据进行二次加工操作,一些传统的办法可以实现对数据的加工。但利用到ES6的解构赋值,则更为简单。

解构赋值主要分为对象的解构和数组的解构,在没有解构赋值的时候,我们的赋值是这样的

let arr = [1,2,3]
let a = arr[0]
let b = arr[1]
let c = arr[2]

这样写很繁琐,解构赋值可以轻松解决上面的问题。

一、数组的解构赋值

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

但是很多时候,数据并非一一对应的,并且我们希望得到一个默认值

let arr = [,1,2]
let [a='我是默认值',b,c] = arr
console.log(a) // '我是默认值'
console.log(b) // 1
console.log(c) // 2

从这个例子可以看出,在解构赋值的过程中,a=undefined时,会使用默认值
那么当a=null时呢?当a=null时,那么a就不会使用默认值,而是使用null

// 数组的拼接
let a = [0,1,2]
let b = [3,4,5]
let c = a.concat(b)
console.log(c) // [0,1,2,3,4,5]

let d = [...a,...b]
console.log(d) // [0,1,2,3,4,5]
// 数组的克隆
// 假如我们简单地把一个数组赋值给另外一个变量
let a = [0,1,2,3]
let b = a
b.push(4)
console.log(a) // [0,1,2,3,4]
console.log(b) // [0,1,2,3,4]

因为这只是简单的把引用地址赋值给b,而不是重新开辟一个内存地址,所以a和b共享了同一个内存地址,该内存地址的更改,会影响到所有引用该地址的变量,那么用下面的方法,把数组进行克隆一份,互不影响。

let a = [0,1,2,3]
let b = [...a]
b.push(4)
console.log(a) // [0,1,2,3]
console.log(b) // [0,1,2,3,4]

二、对象的解构赋值

对象的解构赋值和数组的解构赋值其实类似,但是数组的数组成员是有序的

而对象的属性则是无序的,所以对象的解构赋值简单理解就是等号的左边和右边的解构相同

let {name,age} = {name:"swr",age:28}
console.log(name) // 'swr'
console.log(age) // 28

对象的解构赋值是根据key值进行匹配

let { name:Name,age } = { name:'swr',age:28 }
console.log(Name) // 'swr'
console.log(age) // 28

 

posted @ 2020-04-09 09:25  乔万泽  阅读(535)  评论(0编辑  收藏  举报