javascript - JS数组格式合并转换

查看:104
本文介绍了javascript - 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"}
];

要求转换成如下格式:

[
    {
        mainTitle: "AAA"
        subList: [
            {
                subId:1
                subTitle:"A-1"
            },
            {
                subId:2
                subTitle:"A-2"
            },
            {
                subId:3
                subTitle:"A-3"
            }
        ]
    },
    {
        mainTitle: "BBB"
        subList: [
            {
                subId:4
                subTitle:"B-1"
            }
        ]
    },
    {
        mainTitle: "CCC"
        subList: [
            {
                subId:5
                subTitle:"C-1"
            },
            {
                subId:6
                subTitle:"C-2"
            }
        ]
    }
]

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

解决方案

供参考

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())

这篇关于javascript - JS数组格式合并转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆