前端对对象数组按照指定属性分类
后台给了一大串数组,希望前段自己根据属性来分类,写出了这个公共方法。
这是后台大哥给的数据,需要按照deviceType分类
自己写的处理方法
this.devObj = this.handleArrayClassification(res.data,'deviceType');
// 处理数组分类 data:分类的数组 label:按照分类的字段
handleArrayClassification(data:Array<any>,label:string):{}{
const labelsMap:any = {}; // map存储
data.forEach((item:any)=>{
if(!labelsMap[item[label]]){//没有就创建
labelsMap[item[label]] = {
children: []
}
}
labelsMap[item[label]].children.push(item);
});
console.log(labelsMap);
return labelsMap;
}
因为页面用的ng,迭代就是这样:
<nz-select nzPlaceHolder="设备类型">
<ng-container *ngFor="let dev of devObj | keyvalue">
<nz-option-group [nzLabel]="dev.key">
<nz-option *ngFor="let devValue of dev.value.children" [nzValue]="devValue.id" [nzLabel]="devValue.deviceSubType"></nz-option>
</nz-option-group>
</ng-container>
</nz-select>
工作上的一些收获,如果能帮助到你,就再好不过了.
版权声明:本文为qq_15798421原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。