Convert js array to tree structure

array structure

Insert image description here

Convert to tree structure

Insert image description here

code show as below


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

Guess you like

Origin blog.csdn.net/weixin_46002631/article/details/126981345