首页 > 解决方案 > 循环遍历对象数组并更改 JavaScript 中键的值

问题描述

我有以下 json 数组,我从我的 Angular 应用程序中的服务响应中解构了它。

this.selectedList = [
  [
    {
      "meterNumber": "Z00001410",
      "utilType": "elec",
      "mprnGprn": "3100000334",
      "isChecked": true
    },
    {
      "meterNumber": "Z00001410",
      "utilType": "gas",
      "mprnGprn": "1000003344",
      "isChecked": true
    }
  ],
  [
    {
      "meterNumber": "Z00001410",
      "utilType": "elec",
      "mprnGprn": "1000003344",
      "isChecked": true
    }
  ],
  [
    {
      "meterNumber": "Z00001410",
      "utilType": "elec",
      "mprnGprn": "1000003344",
      "isChecked": true
    }
  ]
]

我需要做的是遍历列表并在单击事件上将isChecked值更改为 false。我试过以下

  selectAll(){
    this.selectedList = this.data.reportList.map((meter) => meter.pm);
    this.newList = this.selectedList.map((data) => {
      data.forEach(item => item.isChecked = false);
  });
  console.log(this.newList);
  }

上面的代码将值更改为 false,但是当我尝试控制 newList 时,它是一个未定义值的数组。这是最好的方法还是我在这里做错了什么。

提前致谢。

标签: javascriptangularloopsiteration

解决方案


您只需return data要从地图的每次迭代中添加:

this.selectedList = [
  [{
      "meterNumber": "Z00001410",
      "utilType": "elec",
      "mprnGprn": "3100000334",
      "isChecked": true
    },
    {
      "meterNumber": "Z00001410",
      "utilType": "gas",
      "mprnGprn": "1000003344",
      "isChecked": true
    }
  ],
  [{
    "meterNumber": "Z00001410",
    "utilType": "elec",
    "mprnGprn": "1000003344",
    "isChecked": true
  }],
  [{
    "meterNumber": "Z00001410",
    "utilType": "elec",
    "mprnGprn": "1000003344",
    "isChecked": true
  }]
]

selectAll = () => {
  this.newList = this.selectedList.map((data) => {
    data.forEach(item => {item.isChecked = false});
    return data;
  });
  console.log(this.newList);
}

selectAll()


推荐阅读