3 个回答

无论是 concat, Spread syntax 还是 Object.assign 执行的都是浅拷贝,不是深拷贝,也就是只遍历一层。

在这种情况下如果存在数组成员是对象,即数据存在更多层级。比如

const a1 = [{ a: 1 }]
const b1 = [{ b: 1 }]
const c1 = [...a1, ...b1]
const c2 = a1.concat(b1)

c1[0].a = 3
c2[1].b = 4

console.log(a1[0].a)  // 变成了3
console.log(b1[0].b)  // 变成了4

对象类型数组存的是值的内存指针,基本类型的数组存的是具体的值,所以效果不同

不需要拷贝方法的话。用这个 JSON.parse(JSON.stringify(object))

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题