如何在省图上使用.reduce计算总数

  • 本文关键字:reduce 计算 dart
  • 更新时间 :
  • 英文 :


我有一个这样的地图:

{id2: {quantity: 6, name: NEW NAME}, 1484: {quantity: 1, name: NEW NAME 404}, id: {quantity: 34, name: NEW NAME}}

这里有一个键名为"quantity">我需要做的是计算总数量,对于这个例子6+1+34 = 41,可能使用.reduce方法,但无法找到如何在地图上实现它。

我认为使用fold更有意义,您可以在这里阅读:https://api.dart.dev/stable/2.10.5/dart-core/Iterable/fold.html

void main() {
final map = {
'id2': {'quantity': 6, 'name': 'NEW NAME'},
1484: {'quantity': 1, 'name': 'NEW NAME 404'},
'id': {'quantity': 34, 'name': 'NEW NAME'}
};
final sum = map.values
.fold(0, (int sum, element) => sum + (element['quantity'] as int));
print(sum); // 41
}

但是如果你真的想使用reduce,你可以这样做:

void main() {
final map = {
'id2': {'quantity': 6, 'name': 'NEW NAME'},
1484: {'quantity': 1, 'name': 'NEW NAME 404'},
'id': {'quantity': 34, 'name': 'NEW NAME'}
};
final sum =
map.values.map((e) => e['quantity'] as int).reduce((a, b) => a + b);
print(sum); // 41
}

最新更新