数组结构
转换成树结构
代码如下
function listToTree(srcList) {
// 1.记录根位置
let destList = []
srcList.forEach(path => {
// 2.待匹配项
let pathList = path.split('*')
let pathListpie = pathList[0].split('/')
let date = pathList[1]
// 3.将移动指针重置顶层,确保每次从根检索匹配(必须!!!)
let levelList = destList
// 4.遍历待询节点
for (let value of pathListpie) {
// 5.同层同名节点查找匹配
let obj = levelList.find(item => {
item.value == value;
})
// 6.若不存在则建立该节点
if (!obj) {
obj = {
value,date, children: [] }
levelList.push(obj)
// 7.若当前被增节点是叶子节点,则裁剪该节点子节点属性
if (value == pathListpie[pathListpie.length - 1]) {
delete obj.children
}
}
// 8.已有则进入下一层,继续寻找
levelList = obj.children
}
})
return destList
}
let srcList = ["/yard/G1/img/20220921/a.jpg*2022-09-21T21:22:14.963+08:00","/yard/G2/img/20220921/a.jpg*2022-09-21T21:22:14.963+08:00"]
let result = listToTree(srcList)
console.log(JSON.stringify(result, null, 2))