flutter - 迭代飞镖/颤振中的地图值
问题描述
我基本上来自 JS 背景,现在正在尝试使用 Flutter 框架。我一直在格式化从 API 收到的数据。
数据接收到一个对象数组
[
{
"id": 1,
"name": "name1",
"type": "Both",
"count": 4
},
{
"id": 2,
"name": "name2",
"type": "Both",
"count": 6
},
{
"id": 3,
"name": "name1",
"type": "Both",
"count": 2
},
{
"id": 4,
"name": "name3",
"type": "Both",
"count": 8
},
......
]
我的要求是我必须根据名称对数据进行分组
{
name1: [
{
"id": 1, "name":"name1", "type": "Both", "count": 4
},
{
"id": 3, "name":"name1", "type": "Both", "count": 2
}
],
name2: [
{
"id": 2, "name":"name2", "type": "Both", "count": 6
}
],
.....
}
在 dart 中,我设法使用 collections.dart 包中的 groupBy 进行分组。
问题是我无法遍历分组数据。我需要访问计数以对每个分组名称进行一些操作。
下面是我尝试过的代码片段
Map data;
List partySnapData;
Map newMap;
Future _getTopParties() async {
final response =await http.get(API_URL + '/getPartySnapShot');
data =json.decode(response.body);
partySnapData = data['resultObj'];
setState(() {
newMap = groupBy(partySnapData, (obj) => obj['party_name']);
for(var v in newMap.values) {
print(v);
}
});
}
print(v) 实际上给了我为地图 EG 映射的值
[
{ "id": 1, "name":"name1", "type": "Both", "count": 4 },
{ "id": 3, "name":"name1", "type": "Both", "count": 2 }
],
.....,
......
现在,我如何循环或迭代数组,这里是v,以便我可以访问里面的元素?
解决方案
我找到了解决方案。我发布它,以防它帮助某人。
我想循环通过 v 来生成对象。
newMap = groupBy(partySnapData, (obj) => obj['party_name']);
for(var v in newMap.values) {
print(v);
//below is the solution
v.asMap().forEach((i, value) {
print('index=$i, value=$value');
}
}
推荐阅读
- powershell - Powershell:如何将标准输出和标准错误分别重定向到文件和控制台
- javascript - Javascript:如果我们有元素属性的集合,如何删除数组
- c# - 使用 C# ASP.NET MVC 显示来自单个数组 JSON(azure Cosmos db) 的数据
- python - 如何在 python 中设置新的 midtrans 客户端支付网关
- vba - 如何在运行时从文档正文中动态读取 VBA 宏字符串?
- swift - 表格视图中的数据混合,我该如何避免?迅速
- reactjs - 为什么复选框不能在我的导航组件中进行视觉更新
- python - 无法在 pyplot matplotlib 中得到准确的图
- c# - HttpClient SendAsync 死锁
- android - 如何仅在改造android中的特定参数中更改值