【问题标题】:JavaScript object array Group By and Get valuesJavaScript 对象数组 Group By 和 Get 值
【发布时间】:2016-05-27 20:22:21
【问题描述】:

我想在deptId 上为下面的对象数组做一个groupBy,我应该能够使用AngularJS 在页面上显示数据,如下所示

我有一个这样的对象:

var arr = [
     {deptId: '12345',deptName: 'Marketing', divId: '1231',divName: 'Lead'},
     {deptId: '12345',deptName: 'Marketing', divId: '8796',divName: 'Assistants'},
     {deptId: '32145',deptName: 'Sales', divId: '1231',divName: 'Lead'},
     {deptId: '32145',deptName: 'Sales', divId: '8796',divName: 'Assistants'},
     {deptId: '32145',deptName: 'Sales', divId: '8221',divName: 'Associates'}
]

在ui上显示如下

 Marketing
 <ul>
   <li>Lead 
   <li>Assistants
 </ul>
 Sales
 <ul>
   <li>Lead
   <li> Assistants
   <li> Associates
 </ul>

【问题讨论】:

  • 你尝试了什么?
  • 我试过这样做 var result = .chain(vm.ohcUser.departments).groupBy("deptId").pairs() .map(function (currentItem) { return _.object (.zip(["deptId", "depts"], currentItem)); }).value();
  • 你走得更远,实际上比这更简单
  • 请在提问前先搜索一下这个......网上有很多angular groupBy的例子以及这个网站上的问题stackoverflow.com/search?q=angular+groupBy
    • {{key}}
      • {{dept.divName}}
    我也试过这个,这只是给了我 deptId 和分组数据作为列表项,如下所示。 12345 Lead Assistants 32145 Lead Assistants Associates 但在我的情况下,deptName 不是唯一的,deptId 是唯一的,但我应该为每个部门显示 deptName。

标签: javascript angularjs html lodash


【解决方案1】:

Lodash 让你很容易做到这一点:

var sortedDept = _.groupBy(arr, function(ite){return ite.deptName});

现在您可以通过 sortedDept.Marketing 访问 --> 为您提供一个仅包含营销相关对象的数组。

然后只显示这些值。

【讨论】:

  • 这里的问题是Dept名称不是唯一的,它可以重复,并且deptId是唯一的
  • 不明白你的意思。使用此解决方案,您将按其 deptName 将对象分组到数组中。测试和控制台记录输出,你会看到
猜你喜欢
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 2015-04-06
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多