我是 Dart 的新手。目前我有一个重复项目列表,我想计算它们的出现次数并将其存储在地图中。
var elements = ["a", "b", "c", "d", "e", "a", "b", "c", "f", "g", "h", "h", "h", "e", "a"];
Run Code Online (Sandbox Code Playgroud)
我想要这样的结果:
{
"a": 3,
"b": 2,
"c": 2,
"d": 2,
"e": 2,
"f": 1,
"g": 1,
"h": 3
}
Run Code Online (Sandbox Code Playgroud)
我做了一些研究并找到了一个 JavaScript 解决方案,但我不知道如何将其转换为 Dart。
var counts = {};
your_array.forEach(function(x) { counts[x] = (counts[x] || 0)+1; });
Run Code Online (Sandbox Code Playgroud)
Mat*_*ija 22
玩这个:
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);
Run Code Online (Sandbox Code Playgroud)
它的作用是:
或者,如果您喜欢语法糖和一种衬垫,请尝试以下方法:
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);
Run Code Online (Sandbox Code Playgroud)
在所有编程语言中有很多方法可以实现这一点!
awa*_*aik 12
计算列表中项目出现次数的更短方法
物品清单。计数项目等于 1。
List<int> lst = [0,1,1,1,0,8,8,9,1,0];
int res = lst.map((element) => element == 1 ? 1 : 0).reduce((value, element) => value + element);
Run Code Online (Sandbox Code Playgroud)
对象列表。计算属性年龄等于 1 的对象。
class Person {
int age;
Person(this.age);
}
List<Person> lst2 = [Person(1), Person(0), Person(1), Person(0)];
int res2 = lst2.map((element) => element.age == 1 ? 1 : 0).reduce((value, element) => value + element);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11312 次 |
| 最近记录: |