javascript - 计算对象值的出现次数

标签 javascript json

我正在尝试遍历 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/

相关文章:

javascript - Uncaught ReferenceError : response is not defined

javascript - 从某个位置读取 csv 文件并显示为 html 表格

json - 条件语句在 json 模式验证中不起作用

javascript - JQuery/javascript 将 div 放置在父 div 的任意位置

javascript - 错误 [ERR_MODULE_NOT_FOUND] : Cannot find package 'src'

javascript - Nuxt中如何传递多个参数?

javascript - 当用户在其中键入时,所选值不会添加到文本区域内的现有文本

javascript - 如何使用保存对话框将表单值保存到 JSON?

javascript - jquery JSON 从查询字符串中删除分隔符

java - 将 JSON 转换为 XML 生成无效 XML