javascript - lodash 字段的唯一计数

标签 javascript arrays lodash

我有一个包含 500 个对象的数组,每个对象如下所示:

{name: 'Hello', phone_num: '1234'}

现在我想知道每个名字有多少个。所以我希望将我的数组转换为以下内容:

[{name: 'Hello', count:15}, {name:'Marc', count:5}]

所以我想考虑为此使用 lodash 但查看他们的文档我无法找到答案。

他们有一个叫做 countBy 的东西,但它似乎不足以解决这个问题。

谁能帮帮我?

最佳答案

您可以使用 groupBy()按名称分组,然后 map()每个分组的项目返回必要的计数和名称。

var result = _(data)
  .groupBy('name')
  .map((items, name) => ({ name, count: items.length }))
  .value();

var data = [
  { name: 'Hello', phone_num: '1234'},
  { name: 'Hello', phone_num: '1234'},
  { name: 'Hello', phone_num: '1234'},
  { name: 'Hello', phone_num: '1234'},
  { name: 'Hello', phone_num: '1234'},
  { name: 'Hello', phone_num: '1234'},
  { name: 'Hello', phone_num: '1234'},
  
  { name: 'Marc', phone_num: '5432'},
  { name: 'Marc', phone_num: '5432'},
  { name: 'Marc', phone_num: '5432'},
  { name: 'Marc', phone_num: '5432'},
  { name: 'Marc', phone_num: '5432'},
  { name: 'Marc', phone_num: '5432'},
  { name: 'Marc', phone_num: '5432'},
  { name: 'Marc', phone_num: '5432'},
  
  { name: 'Sam', phone_num: '76532'},
  { name: 'Sam', phone_num: '76532'},
  { name: 'Sam', phone_num: '76532'},
  { name: 'Sam', phone_num: '76532'}
  
];
  
var result = _(data)
  .groupBy('name')
  .map((items, name) => ({ name, count: items.length }))
  .value();
  
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.12.0/lodash.js"></script>

更新:

ES5 版本为:

var result = _(data)
  .groupBy('name')
  .map(function(items, name) { 
     return { name: name, count: items.length };
  }).value();

关于javascript - lodash 字段的唯一计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37347714/

相关文章:

java - 如何改变数组的长度

java - 我用 split 制作了一个 char[] 并尝试再次将其变成字符串,但我不知道为什么这不起作用

C 数组初始化 - 一些基础知识

javascript - ramda.js 中是否有相当于 mapValues 的函数(类似于 lodash)?

javascript - 在 SPA 站点中保持 2 个导航菜单同步

javascript - 谷歌浏览器 - 使用 ajax 时停滞不前,如何解决?

javascript - 更改元素文本不起作用

php - jQuery - 如果选中 > 2 个复选框,如何显示外部网页?

javascript - 查找数组中链式递增的值

Javascript实现嵌套json数据的深度过滤