nay*_*kam 1 java java-8 typescript angular
我想在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);
}
}
Run Code Online (Sandbox Code Playgroud)
但在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()));
}
Run Code Online (Sandbox Code Playgroud)
你能帮助改进打字稿方法吗?使用TypeScript中的属性对对象数组进行分组的最佳方法是什么?谢谢
通常,对于JS中的任何类型的复杂转换,我都使用lodash,它也可以在TS中使用.希望以下帮助你."属性"是您希望对项目集合进行分组的关键.
import * as _ from 'lodash';
export class A {
public datas: Data[];
private groupBy(): void {
let groupedItems: any[] = _.groupBy(datas, 'property');
}
}
Run Code Online (Sandbox Code Playgroud)
阿什利
归档时间: |
|
查看次数: |
1300 次 |
最近记录: |