我正在尝试遍历 JSON 文件中的一些数据并计算相同城市/事件的数量...
var json = [
{ "city": "California" },
{ "city": "California" },
{ "city": "California" },
{ "city": "Texas" },
{ "city": "Florida" }
];
var obj = {};
for (var i = 0, j = json.length; i < j; i++) {
if (obj[json[i]]) {
obj[json[i]]++;
}
else {
obj[json[i]] = 1;
}
}
console.log(obj);
JSFiddle: http://jsfiddle.net/f2939ucw/
问题是返回的对象只返回数组中对象的数量,而不是相同的城市。
最佳答案
另一种表达方式:
json.reduce(function(sums,entry){
sums[entry.city] = (sums[entry.city] || 0) + 1;
return sums;
},{});
Array.reduce()
对数组的每个元素调用回调,将上一个调用的返回作为下一个中的第一个参数传递。 (最后的 {}
是初始值,传入第一次调用)
所以这正是您所做的 - 创建一个空对象,遍历数组,并在对象内累加总计。它只是简洁地做这件事。
关于javascript - 计算对象值的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29957390/