原创  js 算法之目录列表生成目录树

分类:前端,python    176人阅读    IT小君  2022-09-27 22:12

需求:

   获取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"
			}
		]
	}
]
服务器费用不足...

黑客帝国文字雨矩阵动画特效

bootstrap风格后台界面管理系统模板 - Voler

bootstrap框架web UI工具包后台模板 - MegaDin

JS+CSS3卡通汽车行驶特效

区块链数字货币管理系统网页模板 - Cryptio

Vue 3、Vite和TailwindCss开发的管理面板

Hotspot Map - 强大的图片热点注释和提示工具

建筑工程机械设备租赁网站HTML模板 - Antek

JavaScript模拟网页星际旅行特效

物品租赁买卖业务平台HTML5模板 - Doremi

CSS3机械工业风齿轮转动特效

程序员向妹子表白专用代码

一个alert网页小部件

滚动下拉图片切斜HTML5特效

HTML5大气导航栏鼠标悬停特效

给乌龟喂食卡通HTML5特效

时尚和轻量设计Bootstrap4管理系统模板 - Sunny

UFO适合404页面的jQuery特效

时尚的社交网站前端界面HTML模板 - Cirkle

Vue轻量级后台管理系统基础框架模板--精

服务器费用不足...
 工具推荐 更多»