【发布时间】:2019-08-12 08:58:48
【问题描述】:
我有一个 JSON 对象数组,它们必须按多个属性分组。
const JSON_DATA = [
{"componentName":"CP1","articleNumber":"441","componentType":"Ext","version":"V1.1.6"},
{"componentName":"CP5","articleNumber":"444","componentType":"Int","version":"V2.1.8"},
{"componentName":"CP5","articleNumber":"444","componentType":"Ext","version":"V2.1.0"},
{"componentName":"CP5","articleNumber":"444","componentType":"Ext","version":"V2.1.8"},
{"componentName":"CP4","articleNumber":"442","componentType":"Ext","version":"V1.1.0"}];
我想使用 linqts 按 componentName、articleNumber 和 componentType 进行分组。
interface IComponent {
componentName: String;
articleNumber: String;
componentType: String;
version: String;
}
class JsonGroupBy {
public groupBy(data: IComponent[]): any {
let mylist = new List < IComponent > (data);
let result = mylist.GroupBy((comp) => comp.componentName, (comp) => comp.version);
return result;
}
}
这是可行的,但我不知道如何不仅按 componentName 分组,还按 articleNumber 和 componentType 分组。当前输出如下所示:
{"CP1": ["V1.1.6"], "CP4": ["V1.1.0"], "CP5": ["V2.1.8", "V2.1.0", "V2.1.8"]}
我喜欢的结果是这样的:
[
{"componentName": "CP1","articleNumber":"441","componentType":"Ext","version": ["V1.1.6"]},
{"componentName": "CP5","articleNumber":"444","componentType":"Int","version": ["V2.1.8"]},
{"componentName": "CP5","articleNumber":"444","componentType":"Ext","version": ["V2.1.0","2.1.8"]},
{"componentName": "CP4","articleNumber":"442","componentType":"Ext","version": ["V1.1.0"]}
]
【问题讨论】:
-
linqts与linqjs几乎相同吗? -
@Nina Scholz 不一样,但如果你能提供一个,我会采用 linqjs 解决方案。
标签: javascript typescript linq group-by linq.js