javascript - 使用 lodash/Javascript 对类(class)进行分组并计算用户数量

标签 javascript jquery lodash

得到一个数组列表,其中包含参加的类(class)和用户的列表;需要一个输出,通过对类(class)进行分组并计算总用户数来显示参加的用户;

var arrList = [
  { class: 'one', user: 'user1' },
  { class: 'two', user: 'user1' },
  { class: 'two', user: 'user2' },
  { class: 'one', user: 'user3' },
  { class: 'two', user: 'user3' },
  { class: 'three', user: 'user1' },
  { class: 'four', user: 'user1' }
];

// output
[
  { class: 'one', user: [ 'user1', 'user2', 'user3' ], count: 3 },
  { class: 'two', user: [ 'user1', 'user3' ], count: 2 },
  { class: 'three', user: [ 'user1' ], count: 1 },
  { class: 'four', user: [ 'user1' ], count: 1 } 
];

最佳答案

使用_.groupBy()通过class键收集对象,然后映射到所需的表单。

带有链接的解决方案(需要完全导入 lodash 包):

const arrList = [{"class":"one","user":"user1"},{"class":"two","user":"user1"},{"class":"two","user":"user2"},{"class":"one","user":"user3"},{"class":"two","user":"user3"},{"class":"three","user":"user1"},{"class":"four","user":"user1"}];

const result = _(arrList)
  .groupBy('class')
  .map((group, key) => ({
    class: key,
    user: _.map(group, 'user'),
    count: group.length
  }))
  .value();
  
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

使用_.flow()的解决方案(可以从lodash包中导入您需要的内容):

const { flow, partialRight: pr, groupBy, map } = _; // replace with imports in your project

const fn = flow(
  pr(groupBy, 'class'),
  pr(map, (group, key) => ({
    class: key,
    user: map(group, 'user'),
    count: group.length
  }))
);
  
const arrList = [{"class":"one","user":"user1"},{"class":"two","user":"user1"},{"class":"two","user":"user2"},{"class":"one","user":"user3"},{"class":"two","user":"user3"},{"class":"three","user":"user1"},{"class":"four","user":"user1"}];

const result = fn(arrList);
  
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

关于javascript - 使用 lodash/Javascript 对类(class)进行分组并计算用户数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270892/

相关文章:

javascript - lodash/fp _.extend 不会像在 lodash 中那样改变第一个参数

javascript - lodash _.get typescript 中的函数

php - 如何国际化javascript代码中使用的字符串?

javascript - 如何正确等待 JavaScript 应用内联 Css

javascript - 第一节课完成后切换第二节课?

javascript - 使用 switch 类延迟 javascript Action

javascript - 对于文本框/文本区域,限制输入的输入长度,但不限制粘贴

javascript - 使用 HTML5、JS 和 Node js 进行多人绘图

javascript - 动态元素上的 jQuery find() 和 each()

javascript - 使用 lodash 在 javascript 中按对象数组中的值进行计数