Как использовать "уменьшить", чтобы получить сумму значений в списке объектов в Dart / Flutter - PullRequest
0 голосов
/ 07 мая 2020

Допустим, у меня есть список таких объектов:

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

Как я могу использовать сокращение в Dart, чтобы получить вывод с суммой населения и площади, например:

{
population: 8500,
area: 6500
}

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Вы можете добиться этого, используя метод reduce в Dart. Проверьте код ниже: Он отлично работает:

КОД

 // 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
}

Для чтения подробнее о методе reduce в дротике, проверьте ссылку ниже:

метод восстановления в дротике

Надеюсь, это поможет.

0 голосов
/ 07 мая 2020

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}

Подробнее о reduce vs fold, вы можете захотеть увидеть детали , в которых указан topi c.

...