lodash 中的 groupBy 计数

新手上路,请多包涵

我有一个这样的对象数组:

 [
  {
    rating: 1
  },
  {
    rating: 2
  },
  {
    rating: 3
  },
  {
    rating: 1
  }
]

我想要这样的结果 -

 {
  1: 2,
  2: 1,
  3: 1
}

它将是 Rating_Value: Count

我怎样才能在 lodash 中做到这一点?或者是否可以在没有 lodash 的情况下进行优化?

原文由 nirvair 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 569
2 个回答

您可以使用 lodash#countBy

 var result = _.countBy(data, 'rating');

 var data = [
  {
    rating: 1
  },
  {
    rating: 2
  },
  {
    rating: 3
  },
  {
    rating: 1
  }
];

var result = _.countBy(data, 'rating');

console.log(result);
 <script src="https://cdn.jsdelivr.net/lodash/4.14.2/lodash.min.js"></script>

原文由 ryeballar 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 reduce() 得到这个结果。

 var data = [{"rating":1},{"rating":2},{"rating":3},{"rating":1}];

var result = data.reduce(function(r, e) {
  r[e.rating] = (r[e.rating] || 0) + 1;
  return r;
}, {});

console.log(result)

原文由 Nenad Vracar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题