我是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);
这样做是:
或者如果你喜欢语法糖和一个衬里尝试这个:
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);
在所有编程语言中有很多方法可以实现这一点!
import 'package:queries/collections.dart';
void main() {
var elements = ["a", "b", "c", "d", "e", "a", "b", "c", "f", "g", "h", "h", "h", "e", "a"];
var count1 = Collection(elements).count((e) => e == 'a');
print('Count of "a": $count1');
var codeUnit = 'e'.codeUnitAt(0);
var count2 = Collection(elements).count((e) => e.codeUnitAt(0) >= codeUnit);
print('Count of chars >= "e": $count2');
}
结果:
Count of "a": 3
Count of chars >= "e": 7