路径字符串转树状数据

遇到一个需求,就是在本地选中一个文件夹,要把这个文件夹显示在浏览器上,并且要和在本地一样,能打开退回,但是在本地获取的只是一堆字符串路径,大概是下图:


获取的数据


要把它转换为树状结构要怎么写呢

   pathToTree(input) {

      var output = [];

      for (var i = 0; i < input.length; i++) {

        var chain = input[i].path.split("/");

        var currentNode = output;

        for (var j = 0; j < chain.length; j++) {

          if (chain[j] === "") {

            break;

          }

          var wantedNode = chain[j];

          var lastNode = currentNode;

          for (var k = 0; k < currentNode.length; k++) {

            if (currentNode[k].title == wantedNode) {

              currentNode = currentNode[k].children;

              break;

            }

          }

          if (lastNode == currentNode) {

            var newNode = (currentNode[k] = {

              key: input[i].path,

              title: wantedNode,

              children: [],

              check: 0,

              file: input[i].file

            });

            currentNode = newNode.children;

          } else {

            delete currentNode.children;

          }

        }

      }

      return output;

    }


这样就可以得到想用的数据了,完美搞定!

处理后的数据

文章转自:路径字符串数据转化为树型层级对象,path to json tree_weixin_30267697的博客-CSDN博客_jsonpath转换树型结构

你可能感兴趣的:(路径字符串转树状数据)