【无标题】

记录一次实现的一个小小的算法

<script>
	let arr = [
	    '\\ahxd\\test',
	    '\\ahxd\\test\\test1',
	    '\\ahxd\\test\\test1\\test2',
	    '\\ahxd\\test\\test1\\test2\\test3',
	    '\\ahxd\\test\\test1\\test2\\test3\\a.js',
	    '\\ahxd\\testA',
	    '\\ahxd\\testB',
	    '\\ahxd\\testB\\testB1',
	    '\\ahxd\\testC\\testC1',
	    '\\ahxd\\testD\\testC1',
	 
	];
	
	// 按路径层级长度排序
	let arrlist = arr.map(item => item.split('\\'));
	arrlist.sort((a, b) => a.length - b.length);
	
	// 依次比较从短到长,重复则移除
	for (let i = 0; i < arrlist.length; i++) {
	    for (let j = i + 1; j < arrlist.length; j++) {
	        if (arrlist[i].every((a, index) => {
	            return a === arrlist[j][index];
	        })) {
	            arrlist.splice(j, 1);
	            j--; 
	        }
	    }
	}
	
	// 将数组转换回路径字符串
	let newList = arrlist.map(item => item.join('\\'));
	console.log(newList);

		// let duanlist=[] //存放最短路径
		// duanlist=arrlist.filter(item=>{
		// 	return item.length==arrlist[0].length
		// })
		// console.log(duanlist)
		// //需要过滤的数据 先排除所有最短的
		// let filterList=arrlist.filter(item=>{
		// 	return item.length!=arrlist[0].length
		// })
		// console.log(filterList)
		// for(let item of filterList){
		// 	//判断剩余的路径是否跟最短路径最后一层一致 不一致
		// 	if(duanlist.filter(a=>a.length==duanlist[duanlist.length-1].length).every(ctem=>{
		// 		return  ctem[ctem.length-1]!=item[ctem.length-1] 
				 
		// 	})){
		// 		duanlist.push(item)
		// 	}
			
		// }
		// console.log(duanlist)
	</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值