我有一个这样的对象列表
var obj = [
{ name: "user", per: { pu: [{ end: "foo" }], ge: [{ end: "bar" }] } },
{ name: "user2", per: { pu: [{ end: "foo2" }], ge: [{ end: "bar2" }] } }
];
我想向cond
和function
中的对象添加一个pu
的新属性ge
,但是当我这样做时,该函数设置为只有最后一个对象。
我遍历它们,然后像obj[0].per[itm][0].cond = func
那样设置它们,并将其仅设置为最后一个对象,但是当我尝试将函数toString()
转换为全部时,JSON.stringfy()
的工作方式如下: func行为相同。
我是否可以用其他方式克隆或设置它?
答案 0 :(得分:0)
您可能需要发布完整的代码,因为很难看到错误的位置。但是,从头开始考虑它,我认为一些与嵌套数组匹配的嵌套循环将带您到达那里。
for (let o of obj) {
for (let puObj of o.per.pu) {
puObj.cond = func;
}
for (let geObj of o.per.ge) {
geObj.cond = func;
}
}
答案 1 :(得分:0)
使用以下功能...
const updateObject = (oldObject, updatedProperties) => {
return {
...oldObject,
...updatedProperties
}
};
然后您可以传入新功能或需要添加的任何内容,如下所示:
obj[index].per = updateObject(obj[index].per, {cond : function() {}} ); //use a loop to add the function to all objects in array
//check your current obj
console.log(obj);