显然我有一个JSON数组。而且我被困在JS(没有JQuery)。
我必须找到'服务'的每个不同价值。以及每个值的计数。
所以,如果100出现3次而101出现5次,我需要的结果如下:
{" 100" :" 3"," 101" :" 5"}
我宁愿不使用常规循环,如果有更简洁的东西,我可以使用像forEach()
答案 0 :(得分:3)
首先,将您的JSON数组转换为数组对象:
var json_ar = '[100, 100, 101, 100, 101, 101, 101, 101]';
var ar = JSON.parse(json_ar);
从那时起,它只是counting,它取决于你的数组中的对象实际上是什么。如果他们是数字,那就简单了
var counts = {};
ar.forEach(function(v) {
counts[v] = counts[v] ? counts[v] + 1 : 1;
});
会给你counts = {'100': 3, '101': 5}
。
答案 1 :(得分:0)
如果你不喜欢<array>.forEach(<callback>)
,你也可以使用正常的for..of
循环:
var result = {};
for (var val of json_object) result[val] = result[val] ? result[val] + 1 : 1;