首页 > 解决方案 > 如何使用“减少”来获取 Dart/Flutter 中对象列表中的值的总和

问题描述

假设我有一个这样的对象列表:

provinces = [
{name:'cityA', population:1000, area:2000},
{name:'cityB', population:2500, area:1500},
{name:'cityC', population:5000, area:3000}
];

如何在 Dart 中使用 reduce 来获得人口和面积总和的输出,如下所示:

{
population: 8500,
area: 6500
}

标签: listdictionaryflutterdartreduce

解决方案


fold相当于reduce,你可以使用它如下:

List provinces = [
  {"name":'cityA', "population":1000, "area":2000},
  {"name":'cityB', "population":2500, "area":1500},
  {"name":'cityC', "population":5000, "area":3000}
];

dynamic result = provinces.fold({"population": 0, "area": 0}, (preMap, map) {
  return {
    "population": preMap["population"] + map["population"],
    "area": preMap["area"] + map["area"],
  };
});
print(result);

结果:

{population: 8500, area: 6500}

有关reducevs的更多信息fold,您可能希望查看指定主题的详细信息。


推荐阅读