猿问

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

let arr = [

    {name: 'Bob', age: 12},

    {name: 'Lucy', age: 10},

    {name: 'Alix', age: 11}

]


let arr1 = [...arr]

arr1[0].age = 99


console.log(arr[0].age) // 99

显而易见:es6 的这种拷贝数组方法不合适,因为 arr 里的都是对象,那现在问题就是如何深拷贝 arr 这个数组?


千巷猫影
浏览 994回答 4
4回答

侃侃尔雅

为什么不用lodash的深度克隆技术?一行代码搞定,优雅直观:let arr1 = _.cloneDeep(arr);

神不在的星期二

Emmmm,最简单的办法嘛...arrCopy = JSON.parse(JSON.stringify(arr))复杂一点的话,自己写一个递归咯。

慕哥9229398

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

相关分类

JavaScript
我要回答