Dart (Flutter) 的新手,并且文档似乎没有 Map 类的方法可以让我轻松地做到这一点......
我想要一个带有日期时间键和所吃卡路里值的地图。
{'2019-07xxx': 350, '2019-07xxx': 500, ...}
Run Code Online (Sandbox Code Playgroud)
现在,过滤它以便我只获得今天的值的最佳方法是什么?(即启动应用程序并从存储中提取数据时)
理想情况下,一旦我这样做了,我可以通过以下方式获得今天卡路里的累积值:
var sum = todaysCaloriesArray.reduce((a, b) => a + b);
Run Code Online (Sandbox Code Playgroud)
除非有一些 Dart-fu 可以更好地实现这一点?
您可以.where在地图上使用entries. 例如:
var map = Map<String, int>();
var sum = map.entries
.where((e) => e.key.startsWith('2019-07-22'))
.map<int>((e) => e.value)
.reduce((a, b) => a + b);
Run Code Online (Sandbox Code Playgroud)
小智 6
第一个答案很棒!但您可以使用该fold方法,以便可以在空集合中使用。
var map = Map<String, int>();
var sum = map.entries
.where((e) => e.key.startsWith('2019-07-22'))
.fold(0,(int a, b) => a + b.value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3876 次 |
| 最近记录: |