前端对对象数组按照指定属性分类

前端对对象数组按照指定属性分类

后台给了一大串数组,希望前段自己根据属性来分类,写出了这个公共方法。

这是后台大哥给的数据,需要按照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版权协议,转载请附上原文出处链接和本声明。