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