2014-01-15 41 views
4

Map接口似乎沒有提供對條目的訪問權限作爲迭代,也沒有公開過濾條目的where方法。我錯過了什麼嗎?有一個簡單的解決方法嗎?如何過濾地圖/訪問條目

例如

Map map; 
final filteredMap = map.where((k, v) => k.startsWith("foo")); 

回答

2

您可以使用

library x; 

void main(List<String> args) { 
    Map map = {'key1': 'aölsjfd', 'key2': 'oiweuwrow', 'key11': 'oipoip', 'key13': 'werwr'}; 

    final filteredMap = new Map.fromIterable(
     map.keys.where((k) => k.startsWith('key1')), key: (k) => k, value: (k) => map[k]); 

    filteredMap.forEach((k, v) => print('key: $k, value: $v')); 
} 
+1

你能避免'鍵(K)=> k'這是默認的。 –

+1

謝謝你是一個相當不錯的解決方法。在地圖上它仍然是我感覺像缺失的功能,因此我添加了https://code.google.com/p/dart/issues/detail?id=16117 – Anders