Flutter中基于分类统计交易数据:新增条目数的实现
Dart交易数据分组统计扩展:新增条目数
现有一组交易数据,已实现按分类分组并求和金额的功能,需要扩展输出,新增每个分类的交易条目数。
原交易数据
List<Transaction> transactionlist=[ Transaction(category: 'Food', amount: 100.00), Transaction(category: 'Food', amount: 200.00), Transaction(category: 'Provision', amount: 1000.00), Transaction(category: 'Shopping', amount: 2000.00), Transaction(category: 'Food', amount: 300.00),];
现有代码
List<Map<String, Object>> get categorybasedinfo { Map<String, List<Transaction>> grouped = groupBy(transactionlist, (value) => value.category); List<Transaction> result = grouped.entries .map((e) => Transaction( category: e.key, amount: e.value.fold(0, (total, ele) => total + ele.amount))) .toList(); List<Map<String, Object>> listmap = result .map((e) => { 'category': e.category, 'amount': e.amount, }) .toList(); return listmap; }
现有输出
[ {'category':'Food', 'amount':600.00}, {'category':'Provision','amount':1000.00}, {'category':'Shopping','amount':2000.00} ]
期望输出
[ {'category':'Food', 'amount':600.00,'numberofentries':3}, {'category':'Provision','amount':1000.00,'numberofentries':1}, {'category':'Shopping','amount':2000.00,'numberofentries':1} ]
修改后的代码
List<Map<String, Object>> get categorybasedinfo { Map<String, List<Transaction>> grouped = groupBy(transactionlist, (value) => value.category); List<Map<String, Object>> listmap = grouped.entries .map((entry) => { 'category': entry.key, 'amount': entry.value.fold(0, (total, ele) => total + ele.amount), 'numberofentries': entry.value.length // 新增条目数统计 }) .toList(); return listmap; }
关键修改说明
- 移除了中间冗余的
result列表,直接从分组后的entry生成目标Map,简化代码逻辑 - 通过
entry.value.length直接获取当前分类下的交易条目数,无需额外计算逻辑
内容的提问来源于stack exchange,提问作者Irfan Ganatra
相关产品推荐
相关产品推荐

