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数据
{}
结果数据: 已经合并了相同的路径部分,比诶将不同的部分使用子节点区分开
[]步骤
- 定义路径分割符号,兼容 Windows 和 Linux
- 去除路径两端的分割符
- 路径按照分隔符分割
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