【发布时间】:2020-08-24 21:26:06
【问题描述】:
我正在尝试根据 List 中的变量计算总和。我有一个包含日期(月/年)和金额的地图列表,我想将其转换为地图列表,其中金额是每个日期的所有“金额”的总和。
我当前想要转换的列表如下所示
[{name: 8/2020, amount: 61606.50}, {name: 9/2020, amount: 18481.95}, {name: 9/2020, amount: 12937.36}, {name: 9/2020, amount: 9056.16}, {name: 9/2020, amount: 6339.31}, {name: 9/2020, amount: 4437.52}, {name: 9/2020, amount: 1725.70}, {name: 9/2020, amount: 1725.70}, {name: 8/2020, amount: 20535.50}, {name: 9/2020, amount: 68451.67}]
我想变成那样:
[{2020 年 8 月:总计},{2020 年 9 月:总计}]
我的代码:
List _list = [];
var map = Map();
var foodList = Provider.of<List<FoodItem>>(context);
var list = foodList.map((e) {
Map _map;
List _list;
_list = e.consumed.map((elo) {
DateTime date;
date = DateTime.fromMillisecondsSinceEpoch(elo['date']);
var test = DateFormat('yM').format(date);
double _price = e.price * elo['amount'];
_map = {
'name': test,
'amount': _price.toStringAsFixed(2),
};
return _map;
}).toList();
return _list;
}).toList();
list.forEach((e) => _list.addAll(e));
print(_list);
_list.forEach((x) {
var test;
test = x['name'];
return map[test] = !map.containsKey(test) ? (1) : (map[test] + 1);
});
if (map.isNotEmpty) print(map);
【问题讨论】: