首页 > 解决方案 > Setting all properties of an object to same value

问题描述

Having an object with this structure:

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

I want to set all isGood values to true. I've tried using _forOwn to go through the object and forEach to go through each property but it seems it's not the correct approach.

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

The error says:

value.forEach is not a function

标签: javascriptangularjsforeachlodashforown

解决方案


实际上你非常接近,你需要使用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);


推荐阅读