2013-06-11 9 views
8

Qual è il modo idiomatico di Dart per rimuovere le chiavi selezionate da una mappa? Qui di seguito sto usando una lista vuota temporanea per contenere le chiavi stringa. C'è un modo più pulito?Elimina le chiavi selezionate da 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)); 

risposta

8

si può fare qualcosa di simile:

_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

Ha lavorato come un fascino, grazie! Non riesco però a capire la parte .for Any (_objTable.remove). Passa la funzione _objTable.remove a .forEach()? – Everton

+3

Qui, passo la funzione per chiamare ogni elemento in elenco. Fondamentalmente, è come '.for Any ((name) => _objTable.remove (name))'. –