我有一个对象。
{
"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":""}]}]}');
最佳答案
您正在推送引用...其中一个的任何更改都会反射(reflect)在另一个中。试试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视为数组,因此不需要解析。
关于javascript - 如何设置数组中推送对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51714743/