Java 如何使用typescript中的属性对对象数组进行分组?

Java 如何使用typescript中的属性对对象数组进行分组?,java,angular,typescript,java-8,Java,Angular,Typescript,Java 8,我想在typescript中对对象数组进行分组。我用传统的或命令式的方式做了如下: public datas: Data[]; public dtoMap: Map<String, DataDTO[]> = new Map<String, DataDTO[]>(); private groupBy(): void { for (let item of this.datas) {

我想在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);
            }
}
公共数据:数据[];
public dtoMap:Map=newmap();
private groupBy():void{
对于(此.datas的let项){
let valueList:DataDTO[]=this.dtoMap.get(item.type);
如果(isUndefined(valueList)| | valueList==null){
valueList=新数组();
}
推送(转换到(项目));
此.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()));
}
publicmap getDataMap(字符串定义,列表数据){
返回datas.stream().map(item->converttoto(defId,item)).collect(Collectors.groupingBy(DataDTO::getType,Collectors.toList());
}

你能帮助改进typescript方法吗?用TypeScript中的属性对对象数组进行分组的最佳方法是什么?感谢

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

    import * as _ from 'lodash';

export class A {
 public datas: Data[];

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

Ashley

.collect(Collectors.toList()).stream()
是完全多余的。@shmosel,我刚刚复制了我的代码并在这里编辑。谢谢你突出显示你的路线正确吗?看起来很奇怪。函数在哪里?您也不需要在
groupingBy()
收集器中指定
toList()
;这是默认值。