You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:20:50