使用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)
如何将一个数组深度复制到另一个数组,使得在复制数组中进行更改时不会修改原始数组。
for of
循环for of(var tag of tags) { if(tag.sortOrder == 1) { tag.type == 'done' }}
。 - Edwin Reynoso