将对象的所有属性设置为相同的值

Leo*_*ssi 3 javascript foreach angularjs lodash forown

有一个具有这种结构的对象:

anObject = {
    "a_0" : [{"isGood": true, "parameters": [{...}]}],
    "a_1" : [{"isGood": false, "parameters": [{...}]}],
    "a_2" : [{"isGood": false, "parameters": [{...}]}],
    ...
};
Run Code Online (Sandbox Code Playgroud)

我想将所有isGood值设置为true. 我试过使用 _forOwn 来遍历对象并使用 forEach 来遍历每个属性,但这似乎不是正确的方法。

_forOwn(this.editAlertsByType, (key, value) => {
    value.forEach(element => {
        element.isSelected = false;
    });
});
Run Code Online (Sandbox Code Playgroud)

错误说:

value.forEach 不是函数

Ank*_*wal 5

使用forEach()map()对象上anObject

var anObject = {
    "a_0" : [{"isGood": true, "parameters": []}],
    "a_1" : [{"isGood": false, "parameters": []}],
    "a_2" : [{"isGood": false, "parameters": []}]
};

Object.keys(anObject).forEach((key)=>{
 anObject[key].map(obj => obj.isGood = true);
});

console.log(anObject);
Run Code Online (Sandbox Code Playgroud)


Pri*_*dez 5

其实你是非常接近的,你需要使用Object.keys(),以获得keys您的anObject对象,然后遍历他们最后修改每个array

anObject = {
  "a_0": [{
    "isGood": true,
    "parameters": [{}]
  }],
  "a_1": [{
    "isGood": false,
    "parameters": [{}],
  }],
  "a_2": [{
    "isGood": false,
    "parameters": [{}],
  }],
  //...
};

Object.keys(anObject).forEach(k => {
  anObject[k] = anObject[k].map(item => {
    item.isGood = true;
    return item;
  });
})
console.log(anObject);
Run Code Online (Sandbox Code Playgroud)