【问题标题】:Javascript/JQuery/Angular: Use a key to count number of times value occursJavascript/JQuery/Angular:使用键来计算值出现的次数
【发布时间】:2015-09-29 05:07:56
【问题描述】:

我有两个 JSON 文件:

1) {id:1, location:'Texas'}, {id:2, location:'New York'}

2) {id:1, val:'author'}, {id:1, val:'author'}, {id:1, val:'reviewer'}

我想使用 id 来显示位置并计算 id 一次性创作/审阅的次数。 (我只有 val 类型 - 作者和审稿人)。

预期输出(JSON、HTML 或只是在 Javascript/Angular 中循环)

id:1, location:'Texas', count (for Author): 2, count (for reviewer): 1 

我还有一堆 id 要循环。什么可能是一种有效的方法?

【问题讨论】:

  • 那么 ids 关联文件之间的 json 对象?如果是这样,朴素算法将嵌套两个 for 循环。
  • 是的,ID 是相关的。好的,会试试看。我试图看看我是否可以避免这种情况。我将尝试下面建议的方法。我将使用角度 ng-repeat 中的数据,因此为计数添加一个额外的类型并循环遍历它可能有意义吗?

标签: javascript angularjs algorithm loops


【解决方案1】:

创建结果的 reduce 和更新计数的 forEach 应该没问题。

var result = locations.reduce(function(result, item) {
    item.author = 0;
    item.reviewer = 0;
    result[item.id] = item;
    return result;
}, Object.crete(null));
authorReviewers.forEach(functin(obj) {
    result[obj.id][obj.val]++;
});

【讨论】:

  • 感谢您的帮助。我正在尝试这个。我以前不知道 reduce 。
  • 你在第二部分循环的对象是什么 - forEach 是针对哪个部分。如果您有一个工作示例,那就太好了。同时,我也会尝试举一个我正在做的事情的例子。
  • @LoserCoder - 位置将是您在问题中引用的对象数组(json 文件 1),而 authorReviwers 在您的问题中引用(json 文件 2)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
相关资源
最近更新 更多