为了账号安全,请及时绑定邮箱和手机立即绑定

包含对象的复杂数组深拷贝

包含对象的复杂数组深拷贝

千巷猫影 2019-03-06 18:16:08
let arr = [    {name: 'Bob', age: 12},    {name: 'Lucy', age: 10},    {name: 'Alix', age: 11}]let arr1 = [...arr]arr1[0].age = 99console.log(arr[0].age) // 99显而易见:es6 的这种拷贝数组方法不合适,因为 arr 里的都是对象,那现在问题就是如何深拷贝 arr 这个数组?
查看完整描述

4 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

为什么不用lodash的深度克隆技术?一行代码搞定,优雅直观:

let arr1 = _.cloneDeep(arr);


查看完整回答
反对 回复 2019-03-16
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

Emmmm,最简单的办法嘛...

arrCopy = JSON.parse(JSON.stringify(arr))

复杂一点的话,自己写一个递归咯。


查看完整回答
反对 回复 2019-03-16
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

这种应当算解构赋值吧,简单点理解就是arr1[0] = arr[0],arr1[1]=arr[1]...所以应当是个引用赋值,浅的不行。用JSON拷贝的话,对象的方法复制不出去。可以试一下map结合assign,或者递归复制


查看完整回答
反对 回复 2019-03-16
  • 4 回答
  • 0 关注
  • 992 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信