Skip to content
json
{
    "data": [
        {
            "fileName": "WaMcpServer.java",
            "path": "src/main/java/cn/istr/tool/wecom/mbg/entity",
            "lang": "golang"
        },
        {
            "fileName": "WaMcpServerMapper.go",
            "path": "src/main/java/cn/istr/tool/wecom/mbg/mapper",
            "lang": "java"
        },
        {
            "fileName": "WaMcpServerMapper.java",
            "path": "src/main/java/cn/istr/common/wecom/mbg/mapper",
            "lang": "java"
        },
        {
            "fileName": "WaMcpServer-doc.markdown",
            "path": "",
            "lang": "markdown"
        }
    ]
}
js
[
  {
    label: 'src/main/java/cn/istr',
    child: [
      {
        label: 'tool',
        child: [
          { label: 'wecom/mbg/entity/WaMcpServerMapper.go', lang: 'golang' },
          { label: 'wecom/mbg/mapper/WaMcpServerMapper.java', lang: 'java' },
        ],
      },
      { label: 'common/wecom/mbg/mapper/WaMcpServerMapper.java', lang: 'java' },
    ],
  },
  { label: 'WaMcpServer-doc.markdown', lang: 'markdown' }
]
使用js实现,将一段json文本转成一个文件目录列表,要求有层级结构,并且如果目录下没有数据,则在名称上合并,

步骤要求
1. 将所有的数据先处理成路径数组
2. 合并路径数组中的相同路径数据,将结果转成树形结构
3. 合并树形结构,将只有子节点的部分名称合并

json数据

{}

结果数据: 已经合并了相同的路径部分,比诶将不同的部分使用子节点区分开

[]

步骤

  1. 定义路径分割符号,兼容 Windows 和 Linux
  2. 去除路径两端的分割符
  3. 路径按照分隔符分割
src
  - main
    - cn
       - controller
         - a.js
       - service
         - b.js
c.js
// 获取keys
- src
  // 只有一个一个子节点
  => main 
  => cn 
  => 
    - controller ==> {controller: {a.js: value}}
      - a.js ==>{a.js: value}
    - service ==> {service: {b.js: value}}
      - b.js ==>{a.js: value}

- c.js