使用以下代码修改 JSON 数组(嵌套到另一个数组中)似乎不行:
var names = [{'name': 'ourname'},{'name': 'yourname'}] ;
var array = [{
"year": "2015",
names
},{
"year": "2016",
names
}];
我无法通过执行此操作来修改“数组”中的单个名称条目
array[0].names[1].name="MY NAME"
因为它实际上修改了“0”行中的所有名称条目:
输出:
0:0 ourname
0:1 MY NAME
1:0 ourname
1:1 MY NAME
笨蛋here
我正在寻找一种干净的方法来在名称数组中实现正确的单一修改,因为我想避免循环来执行此操作。
感谢您的帮助
最佳答案
因为它们指向同一个数组,而且,仅通过 .slice
克隆 names
是不够的,因为数组包含对象
不是原始类型,因此您需要从原始名称进行深度克隆并分配给每个对象。
所以你需要将代码更改为:
var array = [{
"year": "2015",
names: JSON.parse(JSON.stringify(names))
}, {
"year": "2016",
names: JSON.parse(JSON.stringify(names))
}];
查看已编辑的pluker .
我在这里使用 JSON.parse(JSON.stringify(names)) 来简单地从原始数组创建深度克隆,还可以有其他方法。
关于javascript - 使用 javascript 数组填充 JSON 并修改条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31994437/