如何使用 "reduce" 获取 Dart/Flutter 中对象列表中的值的总和

How to use "reduce" to get the sum of values in a list of objects in 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
}

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}

有关 reducefold 的更多信息,您可能希望查看指定主题的 the details

您可以使用 Dart 中的 reduce 方法来实现。 检查下面的代码:完美运行:

代码

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

  // use the reduces method to sum the population and area
  Map<String, dynamic> sum = provinces.reduce((value, element){
    return {
      // sum the population here
      "population": value["population"] + element["population"],
      // sum the area here
      "area": value["area"] + element["area"],
    };
  });

  // print the sum here
  print(sum);

输出:

{
population: 8500,
area: 6500
}

要阅读更多有关 dart 中 reduce 方法的信息,请查看下面的 link:

Reuduce method in dart

希望对您有所帮助。