Javascript 如何在数组中设置推送对象的属性?
我有一个目标Javascript 如何在数组中设置推送对象的属性?,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我有一个目标 { "header": [{ "items": [] }] } var jObj = jQuery.parseJSON('{"header":[{"items":[]}]}'); 我将一个对象推到项目上 var align = jQuery.parseJSON('{"align":""}'); jObj["header"][0].items.push(align); jObj["header"][0].items.push(ali
{
"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":""}]}]}');
由于
align
是同一个对象,因此设置属性时,这两个项都指向相同的引用,它们将被覆盖
jObj["header"][0].items.push(align);
jObj["header"][0].items.push({...align});
由于align
是同一个对象,因此设置属性时,这两个项都指向相同的引用,它们将被覆盖
jObj["header"][0].items.push(align);
jObj["header"][0].items.push({...align});
您正在推送参考资料。。。一方面的任何变化都会反映在另一方面。试试看。它将创建一个不引用对象的副本
var jObj={
“标题”:[{
“项目”:[]
}]
}
var align={“align”:“};
jObj[“header”][0].items.push(Object.assign({},align));
jObj[“header”][0].items.push(Object.assign({},align));
jObj[“标题”][0]。项目[0]。align=“右”;
jObj[“header”][0]。项目[1]。align=“left”;
console.log(jObj)代码>您正在推送引用。。。一方面的任何变化都会反映在另一方面。试试看。它将创建一个不引用对象的副本
var jObj={
“标题”:[{
“项目”:[]
}]
}
var align={“align”:“};
jObj[“header”][0].items.push(Object.assign({},align));
jObj[“header”][0].items.push(Object.assign({},align));
jObj[“标题”][0]。项目[0]。align=“右”;
jObj[“header”][0]。项目[1]。align=“left”;
console.log(jObj)代码>所以,我指向同一个被引用了两次的对象,这使它能够创建一个新对象。似乎有效。我以前从未见过这个符号叫什么?这个叫做spread
操作符,将创建一个浅拷贝…当然这个方法在IE中不起作用,我不知道为什么任何人都必须支持它。函数spreadify(item){var clone={};for(var key in item){if(item.hasOwnProperty(key))//确保不添加继承的道具克隆[key]=item[key];}返回克隆;};所以,我指向同一个被引用了两次的对象,这使它能够创建一个新的对象。似乎有效。我以前从未见过这个符号叫什么?这个叫做spread
操作符,将创建一个浅拷贝…当然这个方法在IE中不起作用,我不知道为什么任何人都必须支持它。函数spreadify(item){var clone={};for(var key in item){if(item.hasOwnProperty(key))//确保不添加继承的道具克隆[key]=item[key];}返回克隆;};