首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在javascript中将对象数组复制到另一个数组中(深度复制)

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

Stack Overflow用户
提问于 2015-02-13 00:25:49
回答 7查看 45.7K关注 0票数 24

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

我已经尝试了下面的方法来测试我是否使用它获得了深度复制的预期行为。但在我对复制的数组进行更改后,原始数组也会被修改。

代码语言:javascript
复制
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)

如何将一个数组深度复制到另一个数组中,以便在对复制数组进行更改时不会修改原始数组。

EN

回答 7

Stack Overflow用户

发布于 2015-02-13 00:32:09

试一试

代码语言:javascript
复制
var copy = JSON.parse(JSON.stringify(tags));
票数 75
EN

Stack Overflow用户

发布于 2015-02-13 00:34:46

请尝试以下操作

代码语言:javascript
复制
// Deep copy
var newArray = jQuery.extend(true, [], oldArray);

有关更多详细信息,请查看此问题What is the most efficient way to deep clone an object in JavaScript?

票数 14
EN

Stack Overflow用户

发布于 2018-05-28 01:44:50

使用ES6克隆对象数组的一个好方法是使用扩展语法:

代码语言:javascript
复制
const clonedArray = [...oldArray];

MDN

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28482593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档