2013-06-11 8 views
8

Wie kann Dart idiomatisch ausgewählte Schlüssel aus einer Map entfernen? Unten verwende ich eine temporäre emptyList, um String-Schlüssel zu halten. Gibt es einen saubereren Weg?Löschen ausgewählter Schlüssel aus der Dart Map

List<String> emptyList = new List<String>(); 
_objTable.keys.forEach((String name) { 
    if (_objTable[name].indices.isEmpty) { 
    emptyList.add(name); 
    print("OBJ: deleting empty object=$name loaded from url=$url"); 
    } 
}); 
emptyList.forEach((String name) => _objTable.remove(name)); 

Antwort

8

Sie können etwas tun:

_objTable.keys 
    .where((k) => _objTable[k].indices.isEmpty) // filter keys 
    .toList() // create a copy to avoid concurrent modifications 
    .forEach(_objTable.remove); // remove selected keys 
+0

wie ein Charme, danke! Ich kann den Teil .forEach (_objTable.remove) jedoch nicht verstehen. Übergibt es die Funktion _objTable.remove an .forEach()? – Everton

+3

Hier gebe ich die Funktion für jedes Element in der Liste aufrufen. Im Grunde ist es wie '.forEach ((name) => _objTable.remove (name))'. –