需求:
获取zip目录树形结构。
取目录列表:
关于后端获取目录列表,参考前文 Python ZIP 文件创建与读取树形目录结构
JS生成目录树:
var arr = [
"index.html",
"css/searchEngine.css",
"js/ajaxPackInfo.js",
"js/jquery.min.js",
"js/searchEngine.js"
]
let treeData=[]
let arrTree = []
for(let j=0;j<arr.length;j++){
let item=arr[j]
let items = item.split('/')
let pNode = null
for(let i=0;i<items.length;i++){
let layArr = arrTree[i]
if(null==layArr){
layArr = []
arrTree[i] = layArr
}
let val = items[i]
let eNode = layArr.filter(ite=>ite.name==val)[0]
let node = null
if(null==eNode){
node={name:val}
if(i==items.length-1){
node.type = "rain"
}else{
node.type = "category"
}
if(i==0){
treeData.push(node)
}else{
if(null==pNode.children){
pNode.children=[]
}
pNode.children.push(node)
}
layArr.push(node)
}else{
node = eNode
}
pNode = node
}
}
console.log(JSON.stringify(treeData))
生成结果:
[
{
"name": "index.html",
"type": "rain"
},
{
"name": "css",
"type": "category",
"children": [
{
"name": "searchEngine.css",
"type": "rain"
}
]
},
{
"name": "js",
"type": "category",
"children": [
{
"name": "ajaxPackInfo.js",
"type": "rain"
},
{
"name": "jquery.min.js",
"type": "rain"
},
{
"name": "searchEngine.js",
"type": "rain"
}
]
}
]