遍历对象数组并更改JavaScript中键的值

时间:2020-11-12 00:05:56

标签: javascript angular loops iteration

我有以下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时,它是未定义值的数组。是执行此操作的最佳方法,还是我在这里做错了。

预先感谢。

2 个答案:

答案 0 :(得分:4)

您只需要从地图的每次迭代中添加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()

答案 1 :(得分:0)

请记住,使用地图时需要返回一个值。这是一个可行的解决方案:

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.selectedList = this.selectedList.map(subArray => {
        subArray.forEach(_ => _.isChecked = false);
        return subArray;
    });
    console.log(this.selectedList)
}

selectAll();