我一直在试图弄清楚如何制作一个JSON对象数组的副本,可以在不更改原始数据的情况下对其进行修改。我确实看到很多关于默认情况下作为引用传递的对象的讨论,但我不明白如何避免这种默认行为。
下面的示例jQuery不是真正的代码,但我认为它说明了我想要实现的目标。任何人都可以帮助我理解如何编写以下示例代码,以便_copy可以修改_master未被修改?
// Master - should never get modified
_master = [
Object { id=0, name="Charlie", city="Memphis", state="TN" },
Object { id=1, name="Steve", city="Chicago", state="IL" }
];
// Copy of Master that can be modified
_copy = _master;
// Modify _copy only - leave _master unmodified
_copy[0].name = "Charles";
答案 0 :(得分:3)
您可以使用:
var copyArray = JSON.parse(JSON.stringify(someArray));
答案 1 :(得分:2)
_copy=JSON.parse (JSON.stringify (_master));
是一种快速的方法。编码将_master
转换为变量的字符串表示形式,解析器将其消耗并将其转换回数组。
将变量转换为字符串后,任何引用/内存连接都会被切断。