我是DART的新手.目前我有一个重复项目的列表,我想计算它们的出现次数并将其存储在 map 中.

var elements = ["a", "b", "c", "d", "e", "a", "b", "c", "f", "g", "h", "h", "h", "e", "a"];

我想得到这样的结果:

{
  "a": 3,
  "b": 2,
  "c": 2,
  "d": 2,
  "e": 2,
  "f": 1,
  "g": 1,
  "h": 3
}

我做了一些研究,找到了一个JavaScript解决方案,但我不知道如何将其转换为DART.

var counts = {};
your_array.forEach(function(x) { counts[x] = (counts[x] || 0)+1; });

推荐答案

玩一下这个:

  var elements = ["a", "b", "c", "d", "e", "a", "b", "c", "f", "g", "h", "h", "h", "e"];
  var map = Map();

  elements.forEach((element) {
    if(!map.containsKey(element)) {
      map[element] = 1;
    } else {
      map[element] +=1;
    }
  });

  print(map);

这样做的目的是:

  • 循环浏览列表元素
  • 如果 map 未将列表元素设置为关键字,则会使用值1创建该元素
  • 否则,如果元素已经存在,则向现有键值添加1

或者,如果你喜欢语法糖和一个内衬,试试这个:

  var elements = ["a", "b", "c", "d", "e", "a", "b", "c", "f", "g", "h", "h", "h", "e"];
  var map = Map();

  elements.forEach((x) => map[x] = !map.containsKey(x) ? (1) : (map[x] + 1));

  print(map);

在所有编程语言中有很多方法可以实现这一点!

Dart相关问答推荐

程序给出不准确的值

根据 Id 比较两个不同的 List

PageView.builder 给出水平视口被给出无界高度错误

播放和暂停 Flutter 动画

Flutter Web:无法用鼠标向下滚动(drag)(Flutter 2.5+)

如何解决此Cannot enable MyLocation layer as location permissions are not granted?

在 Windows 10 中使用 Android Studio 时没有Remove Widget选项

Flutter:并非所有本地化代表都支持应用程序的语言环境

如何垂直对齐行元素?

如何在 Dart 中使用类型Aliases/Typedefs(也是非函数)?

Firebase Crashlytics 崩溃未报告给 Flutter 中的 Firebase 控制台

如何使我的对话框可滚动?

为什么我不能将数字转换为双精度数?

如何在dart中获取 map 的键列表?

如何在Flutter 的http.MultipartRequest请求上上传文件时获取进度事件

如何为 macos 桌面应用启用 Flutter 上网权限?

如何在 timeLimit 之后使future 的计算超时?

Dart MD5 字符串

如何将多个 Stream 合并为更高级别的 Stream?

如何在 Dart 中使用 Switch Case 语句