繁体   English   中英

如何用打字稿中的属性对对象数组进行分组?

[英]How to group the array of objects with a property in typescript?

我想在打字稿中对对象数组进行分组。 我按以下传统或命令方式进行了操作:

     public datas: Data[];
     public dtoMap: Map<String, DataDTO[]> = new Map<String, DataDTO[]>();


 private groupBy(): void {
            for (let item of this.datas) {            
                let valueList: DataDTO[] = this.dtoMap.get(item.type);
                if (isUndefined(valueList) || valueList === null) {
                    valueList = new Array<DataDTO>();
                }
                valueList.push(convertToDTO(item));
                this.dtoMap.set(item.type, valueList);
            }
}

但是在Java中,我编写了类似的方法,如下所示:

public Map<String, List<DataDTO>> getDataMap(String defId, List<Data> datas) {
 return datas.stream().map(item -> convertToDTO(defId, item)).collect(Collectors.groupingBy(DataDTO::getType, Collectors.toList()));
}

您可以帮助改善打字稿方法吗? 在TypeScript中用属性对对象数组进行分组的最佳方法是什么? 谢谢

通常,对于JS中的任何复杂转换,我都使用lodash,它也可以在TS中使用。 希望以下内容对您有所帮助。 “属性”是您要对项目集合进行分组的关键。

    import * as _ from 'lodash';

export class A {
 public datas: Data[];

private groupBy(): void {
           let groupedItems: any[] = _.groupBy(datas, 'property');
}
}

阿什利

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM