使用ES6扩展运算符拷贝

let a  = {id :1}
let b  = {...a}
console.log(b)   //  {id:1}
a == b   //  false 

let arr = [1,2,3]
let arr2 = [...arr]
arr == arr2  //   false

let  oldArr = [ { id : 1 } ]
let  newArr  = [...oldArr ]
oldArr == newArr    // false 
oldArr[0]  == newArr[0]   //  true

可以看到,对于引用类型,扩散可以改变外层的引用类型的地址,但里面的引用类型并没有改变。所以这里的oldArr == newArr 返回的false,oldArr[0]和newArr[0]的比较结果却是true。
在vue项目中,要把table里的数据导出到excle表格里。
在这里插入图片描述
我这里用扩展运算符拷贝了data里的数据。数据格式是一个对象数组,然后在导出excel表的时候,内容做了格式化,结果data里的数据也跟着改变了,所以只要我一导出数据,页面的内容就乱了。
然后这里就重新搭配map来拷贝。

let NewtableData = this.tableData.map(item => {return {...item}});

三 +

let  oldArr = [ { id : 1 } ]
let newArr =  oldArr.map(item=>{return {...item}})
oldArr   //    [{id:1}]
newArr   //    [{id:1}]
oldArr == newArr  //  false
oldArr[0]  ==  newArr[0]  //false


如果还是不行的话, 那就老老实实去深拷贝吧。
lodash的函数库里有。
https://www.lodashjs.com/docs/lodash.clone

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值