原创 

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

分类:前端,python    501人阅读    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"
			}
		]
	}
]
点击广告,支持我们为你提供更好的服务

css+js实现的颜色渐变数字时钟动画特效

HTML5现代家居装潢公司网站模板

css鼠标跟随文字模糊特效

HTML5数字产品服务公司网站模板

html5 canvas进度条圆环图表统计动画特效

响应式咖啡饮品宣传网站模板

网页设计开发公司网站模板

html5 svg夜空中星星流星动画场景特效

响应式太阳能能源公司网站模板

有机水果蔬菜HTML5网站模板

HTML5 Canvas竖直流动线条背景动画特效

小众时尚单品在线电子商务网站模板

js+css3抽奖转盘旋转点餐代码

canvas炫酷鼠标移动文字粒子特效

现代时尚家具公司网站模板

html5 canvas彩色碎片组合球形旋转动画特效

jQuery右端悬浮带返回顶部特效

html5图标下拉搜索框自动匹配代码

响应式时尚单品在线商城网站模板

中小型创意设计服务公司网站模板

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务