从Dart Map中删除选定的键

Eve*_*ton 9 map dart

从地图中删除选定键的Dart惯用方法是什么?下面我使用临时emptyList来保存String键.有更干净的方式吗?

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));
Run Code Online (Sandbox Code Playgroud)

小智 26

简单地做:

_objTable.removeWhere((key, value) => key == "propertyName");
Run Code Online (Sandbox Code Playgroud)

它也适用于嵌套地图。

  • 最简单的解决方案,谢谢@andreskiu andreskiu。 (2认同)

Ale*_*uin 14

You can do something like this :

_objTable.keys
  .where((k) => _objTable[k].indices.isEmpty) // filter keys
  .toList() // create a copy to avoid concurrent modifications
  .forEach(_objTable.remove); // remove selected keys
Run Code Online (Sandbox Code Playgroud)

  • 在这里,我传递函数来调用列表中的每个元素.基本上,它就像`.forEach((name)=> _objTable.remove(name))`. (3认同)