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

推荐答案

你可以这样做:

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

Dart相关问答推荐

如何扩展 Dart 套接字 BroadcastStream 缓冲区大小为 1024 字节?

停止在缓存中保存 Flutter Web Firebase 托管

一键式 Flutter 工具提示

我可以动态应用 Dart 的字符串插值吗?

如何使用 Android aar 文件构建 Flutter 项目?

Flutter ButtonRow 填充

属性 'docs' 不能无条件访问,因为接收到的可能是 'null' Flutter

我如何在屏幕上弹出特定的Flutter

Flutter Drawer Widget - 更改 Scaffold.body 内容

Flutter 错误:The _ScaffoldLayout custom multichild layout delegate forgot to lay out the following child

在dart中使用动态(可变)字符串作为正则表达式模式

如何在Dart中处理JSON

在小部件上显示对话框

'dart:async' 的函数 `runZoned` 的用途

找到两个数字中larger/smaller的方法是什么

Opa vs Dart vs Haxe vs CoffeeScript

在 Dart 中切换失败

Dart 是否支持函数式编程?

使用 Futures 时 .then() 和 .whenCompleted() 方法之间的区别?

判断dart中的字符串是否为数字