猿问

JS数组格式合并转换

有如下数组

var sourceList = [

    {SupportProgramId: 1, Category: "AAA", SubCategory: "A-1"},

    {SupportProgramId: 2, Category: "AAA", SubCategory: "A-2"},

    {SupportProgramId: 3, Category: "AAA", SubCategory: "A-3"},

    {SupportProgramId: 4, Category: "BBB", SubCategory: "B-1"},

    {SupportProgramId: 5, Category: "CCC", SubCategory: "C-1"},

    {SupportProgramId: 6, Category: "CCC", SubCategory: "C-2"}

];

要求转换成如下格式:

求好的转换过程,可以使用es6或lodash提供的方法

隔江千里
浏览 384回答 1
1回答

浮云间

供参考var data = Array.from(sourceList.reduce((map, {    SupportProgramId: subId, Category: mainTitle, SubCategory: subTitle  }) => {  if (map.has(mainTitle)) {    map.get(mainTitle).subList.push({subId, subTitle})  } else {    map.set(mainTitle, {mainTitle, subList: [{subId, subTitle}]})  }  return map}, new Map()).entries())
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答