javascript - 如何使用 HashMap 或数组映射返回总数最高的类别?

标签 javascript arrays meteor

这是我的数组。

donations = [
 {
      donateTo: "BaseCamp",
      amount: 1000,
      date: "12/19/2014, 08:40"
 },
 {
      donateTo: "Where Most Needed",
      amount: 3000,
      date: "12/12/2014, 08:40"
 },
 {
      donateTo: "Where Most Needed",
      amount: 2000,
      date: "12/11/2014, 08:40"
 }
 ];

我怎样才能返回这样的东西?其中,捐赠总额最高的 donateTo 捐赠会连同捐赠总额以及构成该捐赠总额的捐赠数量一起返回。

{ donateTo: "Where Most Needed", total: 5000, count: 2}

我以前能够使用 MongoDB 获得结果,但因为我使用 Meteor,聚合真的很难看并且不是 react 性的。我宁愿获取光标,然后在客户端使用 JavaScript 函数来获取我需要的数据。

谢谢

最佳答案

这是使用下划线的实现:

var orgs = {};

_.each(donations, function(donation) {
  if (orgs[donation.donateTo] == null)
    orgs[donation.donateTo] = 0;
  orgs[donation.donateTo] += donation.amount;
});

var amount = _.max(_.values(orgs));
var donateTo = _.invert(orgs)[amount];
var count = _.where(donations, {donateTo: donateTo}).length;
var result = {donateTo: donateTo, amount: amount, count: count};
console.log(result);

关于javascript - 如何使用 HashMap 或数组映射返回总数最高的类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27912417/

相关文章:

javascript - 在外面关闭模态窗口,在里面有可点击的链接

javascript - JS array.includes()//数组内的数组//[ ['a' ]].includes( ['a' ]) 返回 false

java - 读取一行文本文件,拆分为数组

javascript - 自定义忘记密码电子邮件.Meteorjs

javascript - 从列表中仅检索一个表行

javascript - 将 @click 事件绑定(bind)到数组中的 href

javascript - AEM 服务器端 JavaScript 主机

将数组整数值与移位值进行比较

forms - 在表单提交时使用 meteor 中的表单上传图像

node.js - Meteor - 如何处理外部 API 连接错误?