数组深拷贝看起来很简单。

array.concat()就行了。

但是,如果数组里有对象呢?

实际上,你以为你拷贝了对象,但实际上你只拷贝了对象的引用(指针)!

我们可以做个试验。

// test
let arr_a = [{a:1,b:2,c:3}, {d:4,e:5,f:6}, {g:7,h:8,i:9}]
let arr_b = arr_a.concat()
arr_b[2].g = 70
arr_b[3] = null
console.log(arr_a,arr_b)
// test end

结果:

javascript : 复杂数据结构拷贝实验

两边的对象都被改了。而数组B push的时候,数组A不受影响。

这说明数组本身是深拷贝了,但数组里的对象没有深拷贝。

以上。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-07
  • 2021-07-26
  • 2022-12-23
  • 2022-02-19
  • 2022-02-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-09
  • 2021-12-11
  • 2022-01-25
  • 2022-12-23
相关资源
相似解决方案