按功能映射到列表

时间:2018-12-07 12:34:50

标签: dart

我对dart集合库不是很熟悉,所以我可能需要简单的帮助。

我有一个Map<K,V>T Function(k, v),它们从一个Map条目中产生一个T元素。现在我要一个List<T>。当然,简单的方法确实有效:

List<T> list = [];
map.foreach((k,v) => list.add(myfunc(k,v)));
return list;

但是我认为应该有一个更紧凑的版本?我发现了类似map.values.map((V) => T(V));的东西,但我强烈希望在函数中使用该键。为此有简短的文字吗?

(顺便说一句,我的地图实际上是一个Map<String, Map<String, List<MyType>>>,并且键值位于树的第一个MyType中。而且我觉得使用v.first.values.first[0].getSomething之类的键来恢复键会更昂贵比上面的解决方案好吗?!)

2 个答案:

答案 0 :(得分:0)

如果您同时需要键和值,请尝试类似

 Map<String, Map<String, List<String>>> mapOfMaps= new Map();
 //You can use both the key and the value
 mapOfMaps.keys.map((k) => myfunc(k,mapOfMaps[k]));

答案 1 :(得分:0)

那又怎么样:

var list = map.keys.map((k) => myfunc(k, map[k])).toList();