在javascript中复制对象数组到另一个数组(深度复制)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (63)

在javascript中使用slice(0)和concat()将对象数组复制到另一个数组中不起作用。

我已经尝试了以下内容来测试我是否使用此功能获得了深层复制的预期行为。但是,我在复制的数组中进行更改后,原始数组也会被修改。

var tags = [];
for(var i=0; i<3; i++) {
    tags.push({
        sortOrder: i,
        type: 'miss'
    })
}
for(var tag in tags) { 
    if(tags[tag].sortOrder == 1) {
        tags[tag].type = 'done'
    }
}
console.dir(tags)

var copy = tags.slice(0)
console.dir(copy)

copy[0].type = 'test'
console.dir(tags)

var another = tags.concat()
another[0].type = 'miss'
console.dir(tags)

我如何做一个数组的深层副本到另一个,以便原始数组不会修改,如果我在副本数组中进行更改。

提问于
用户回答回答于

试一试

var copy = JSON.parse(JSON.stringify(tags));

扫码关注云+社区

领取腾讯云代金券