js数组赋值给新数组,改变其中一个,另一个数组也会改变【深坑】

130 阅读1分钟
遇到这个问题我们肯定会不以为然,使用Array.from(arr)或者[..arr]等方法就可以了
但是对于复杂的数组,如数组中嵌套有对象,那么这种方式就没有任何用途了。

let arr=[1,2,3,4,5]
let abc=Array.from(arr)
abc[0]=2
console.log(abc)  // 2 2 3 4 5
console.log(arr)  // 0 2 3 4 5 并不会改变arr的值
但是如果数组中有对象呢!

let arr=[{n:1,m:2},{n:2,m:3}]]
// 如果使用上面的赋值方法是不行,修改某个对象,赋值后的数组和arr都会发生改变。要使用:
let newArr= JSON.parse(JSON.stringify(arr))
先把数组转化为json字符串,再转化为json对象就可以达到想要的效果。