在lodash中使用double groupBy

时间:2018-12-03 20:46:08

标签: javascript angular lodash

因此,我尝试按某种属性对对象数组进行分类。第一次使用groupBy效果很好。现在,我需要遍历这些分组,然后根据单独的属性将其再次分组。我遇到了麻烦,有人可以帮我吗?

TS

this.accountService.getAccountListWithBalance().subscribe(accounts => {
      this.accountList = _.groupBy(accounts, 'category');
      for (var property in this.accountList) {
        if (this.accountList.hasOwnProperty(property)) {
          this.accountList.property = _.groupBy(this.accountList.property, 'subcategory');
        }
      }

generateArray(obj){
    return Object.keys(obj).map((key)=>{ return {key:key, value:obj[key]}});
  }

HTML:

<ul *ngFor="let item of generateArray(accountList)">
  <strong>{{ item.key }}</strong>
  <li *ngFor="let i of item.value">{{i.name}}</li>
</ul>

HTML没有为下一级别的交互设置,但是我知道,如果我只是控制台记录结果对象,它将无法正常工作。就像我说的那样,是第一次对其进行排序,而不是第二次。

2 个答案:

答案 0 :(得分:2)

仅通过更改语法我就可以使其正常工作。使用[]代替.,因此工作代码如下。

this.accountService.getAccountListWithBalance().subscribe(accounts => {
      this.accountList = _.groupBy(accounts, 'category');
      for (var property in this.accountList) {
        if (this.accountList.hasOwnProperty(property)) {
          this.accountList[property] = _.groupBy(this.accountList[property], 'subcategory');
        }
      }

答案 1 :(得分:0)

我相信,当您遍历按类别分组的帐户时,应尝试像这样基于subcategory对每个类别分组的项目进行分组;

this.accountList = _.groupBy(accounts, 'category');
    _.foreach(this.accountList, function(categoryAccount) { 
              _.groupBy(categoryAccount, 'subcategory');
            });