因此,我尝试按某种属性对对象数组进行分类。第一次使用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没有为下一级别的交互设置,但是我知道,如果我只是控制台记录结果对象,它将无法正常工作。就像我说的那样,是第一次对其进行排序,而不是第二次。
答案 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');
});