goland list数据转换树结构

数据如下:

+----+-----+---------+
| id | description | api_group |
+----+-----+---------+
|  1 |   新增api | api       |
|  2 |   更新api | api       |
|  3 |   获取字典分页 | dict  |
|  4 |   获取字典项 | dict    |
|  5 |   获取用户菜单列表 | menu  |
|  6 |   新增菜单 | menu      |
+----+-----+---------+

转换如下:

[
  { 
      title: 'api',
      key: 'api',
      children: [
        {
         title: '新增api',
         key: 1,
        },
        {
         title: '更新api',
         key: 2,
        }
      ]
  },
  {
      title: 'dict',
      key: 'dict',
      children: [
        {
         title: '获取字典分页',
         key: 3,
        },
        {
         title: '获取字典项',
         key: 4,
        }
      ]
  },
  {
      title: 'menu',
      key: 'menu',
      children: [
        {
         title: '获取用户菜单列表',
         key: 5,
        },
        {
         title: '新增菜单',
         key: 6,
        }
      ]
  }
]

请各位大佬请教下如何实现

阅读 1.6k
1 个回答
group := map[string][]<your struct>{}

for _, v := range <your list> {
    _, ok := group[v.ApiGroup]
    if !ok {
        group[v.ApiGroup] = []<your struct>{}
    }
    group[v.ApiGroup] = append(group[v.ApiGroup], v)
}

resp := []<your return struct]{}
for k, v := range group {
    resp = append(resp, <your return struct>{title:k, key:k, children: v}
}
return resp

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进