所以我尝试了一个简单的例子:
const original = [
{id: 0, color: "red"},
{id: 1, color: "blue"}
]
const copy = [...original]
copy[0] = {id:2, color:"red"}
copy[1].id = 2
console.log(original)
console.log(copy)
我得到的结果令人困惑:
Array [Object { id: 0, color: "red" }, Object { id: 2, color: "blue" }]
Array [Object { id: 2, color: "red" }, Object { id: 2, color: "blue" }]
当我更改整个对象时,更改仅发生在复制数组中。
那么为什么copy [1] .id = 2实际上也改变了原始数组,而不仅仅是复制数组中的键?
答案 0 :(得分:0)
这个问题的答案完全取决于您copy
的意思。由于复制可以是浅的,深的,并且介于两者之间。如果您只是想使用对象的 shallow 克隆创建一个新数组,则可以使用map
进行传播。例如:
const copy = original.map(item => ({ ...item }))