为javascript

时间:2019-05-14 16:31:18

标签: javascript

我有一个这样的对象列表

var obj = [
  { name: "user", per: { pu: [{ end: "foo" }], ge: [{ end: "bar" }] } },
  { name: "user2", per: { pu: [{ end: "foo2" }], ge: [{ end: "bar2" }] } }
];

我想向condfunction中的对象添加一个pu的新属性ge,但是当我这样做时,该函数设置为只有最后一个对象。

我遍历它们,然后像​​obj[0].per[itm][0].cond = func那样设置它们,并将其仅设置为最后一个对象,但是当我尝试将函数toString()转换为全部时,JSON.stringfy()的工作方式如下: func行为相同。 我是否可以用其他方式克隆或设置它?

2 个答案:

答案 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);