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

时间:2018-05-09 13:17:00

标签: javascript angularjs foreach lodash forown

拥有具有此结构的对象:

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

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

_forOwn(this.editAlertsByType, (key, value) => {
    value.forEach(element => {
        element.isSelected = false;
    });
});

错误说:

  

value.forEach不是函数

2 个答案:

答案 0 :(得分:4)

在对象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);

答案 1 :(得分:3)

实际上你非常接近,你需要使用Object.keys()获取keys对象的anObject,然后循环遍历它们,最后修改每个array。< / p>

&#13;
&#13;
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);
&#13;
&#13;
&#13;