我有一个对象。
{
"header": [{
"items": []
}]
}
var jObj = jQuery.parseJSON('{"header":[{"items":[]}]}');
我将一个物体推到物品上
var align = jQuery.parseJSON('{"align":""}');
jObj["header"][0].items.push(align);
jObj["header"][0].items.push(align);
我设置了值
jObj["header"][0].items[0].align = "right";
jObj["header"][0].items[1].align = "left";
console.log(JSON.stringify(jObj));
两个对齐方式都获得相同的值,如何设置这些值?
输出
{“ header”:[{“ items”:[{“ align”:“ left”},{“ align”:“ left”}]}}}
这似乎可行,但我需要动态地实现。
var jObj = jQuery.parseJSON('{"header":[{"items":[{"align":""},{"align":""}]}]}');
答案 0 :(得分:2)
您正在推动参考...一个中的任何更改都会反映在另一个中。请尝试使用Object.assign({}, align)。它将创建一个没有引用该对象的副本。
var jObj = {
"header": [{
"items": []
}]
}
var align = {"align": ""};
jObj["header"][0].items.push(Object.assign({}, align));
jObj["header"][0].items.push(Object.assign({}, align));
jObj["header"][0].items[0].align = "right";
jObj["header"][0].items[1].align = "left";
console.log(jObj);
PD:Js将json视为数组,因此无需解析。
答案 1 :(得分:0)
由于align
是同一对象,因此当您设置property
对齐方式时,两个项目都指向相同的参考。
jObj["header"][0].items.push(align);
jObj["header"][0].items.push({...align});