2013-06-11 20 views
8

Seçilen tuşların bir Haritadan kaldırılması için Dart deyimsel yolu nedir? Aşağıda, Dize tuşlarını basılı tutmak için geçici bir boş liste kullanıyorum. Daha temiz bir yol var mı?Seçili anahtarları Dart Haritasından silme

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)); 

cevap

8

Böyle bir şey yapabilirsiniz: bir cazibe gibi çalıştı

_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

, teşekkürler! Bununla birlikte .forEach (_objTable.remove) bölümünü anlayamıyorum. _objTable.remove işlevini .forEach() öğesine mi iletiyor? – Everton

+3

Burada, listedeki her elemanın çağrılması için işlevi iletiyorum. Temel olarak, '.forEach ((name) => _objTable.remove (name)) 'gibi. –