![](/img/trans.png)
[英]Make all relative path URLs in images full paths using PHP, javascript or jQuery
[英]Divide a path in multiple full paths in JavaScript
我試圖找到從一條路徑獲得一系列“完整”路徑的最佳方法。
輸入 :
'source/folder/folder2/folder3/file'
我想要這個輸出:
[
'/',
'/folder',
'/folder/folder2',
'/folder/folder2/folder3',
'/folder/folder2/folder3/file'
]
目前,我可以看到我的代碼沒有優化:
pathArray = path.split('/');
if (pathArray [0] === '') {
pathArray .shift();
}
if (pathArray [pathArray .length - 1] === '') {
pathArray .pop();
}
const finalArrayPath = [];
for (let i = 0; i < pathArray.length; i++) {
let path = '';
for (let j = 0; j <= i; j++) {
path = path + pathArray[j] + '/';
}
finalArrayPath.push(path);
}
更重要的是,我的代碼在每個路徑的末尾和源代碼的開頭都有一個 /,我可以添加用於刪除這些的代碼,但我想要更優化的代碼。
使用Array.prototype.reduce
方法,您可以執行以下操作:
const path = "source/folder/folder2/folder3/file"; const result = path.split("/").slice(1).reduce((allPaths, subPath) => { const lastPath = allPaths[allPaths.length-1]; allPaths.push(lastPath.endsWith("/") ? (lastPath + subPath) : `${lastPath}/${subPath}`); return allPaths; }, ["/"]); console.log(result)
使用單個 for 循環...
const path = 'source/folder/folder2/folder3/file'; const [root, ...pathArr] = path.split('/'); const paths = []; for (let i = 0; i <= pathArr.length; i++) { paths.push(`/${pathArr.slice(0, i).join('/')}`); } console.log('root: ', root); console.log('paths: ', paths);
或者使用Array.from()
...
const path = 'source/folder/folder2/folder3/file'; const [root, ...pathArr] = path.split('/'); const paths = Array.from( { length: pathArr.length + 1 }, (_, i) => `/${pathArr.slice(0, i).join('/')}` ); console.log('root: ', root); console.log('paths: ', paths);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.