【问题标题】:Setting all properties of an object to same value将对象的所有属性设置为相同的值
【发布时间】:2018-10-19 15:10:02
【问题描述】:

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

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 不是函数

【问题讨论】:

  • _forOwn 来自 lodash/下划线?尝试 _.forOwn (缺少点)。另外,value 是什么?

标签: javascript angularjs foreach lodash forown


【解决方案1】:

实际上你已经很接近了,你需要使用Object.keys() 来获取你的anObject 对象的keys,然后遍历它们,最后修改每个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);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      试试这个简单的:

      for (var key in anObject) {
        anObject[key]["isGood"] = true;
      }
      

      【讨论】:

        猜你喜欢
        • 2018-12-02
        • 2018-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-22
        • 1970-01-01
        • 1970-01-01
        • 2019-04-23
        相关资源
        最近更新 更多