遇到一个需求,就是在本地选中一个文件夹,要把这个文件夹显示在浏览器上,并且要和在本地一样,能打开退回,但是在本地获取的只是一堆字符串路径,大概是下图:
获取的数据要把它转换为树状结构要怎么写呢
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转换树型结构
网友评论