记录一次实现的一个小小的算法
<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>