編程題: 自己實現bash realpath (化簡絕對路徑)
阿新 • • 發佈:2017-09-16
方法 pre 數組a path else undefined con 路徑 x11
給一個混入了很多.和..的path,得到其絕對路徑
先看bash realpath結果
MacBook-Pro-5:bin luyu$ realpath /opt/X11/./../X11/.././X11/var/./log/../.././bin/
/opt/X11/bin
我來用js實現
var path = ‘/opt/X11/./../X11/.././X11/var/./log/../.././bin/‘; >>undefined var str = []; >>undefined var arr = path.split(‘/‘); >>undefined for (var i = 1; i < arr.length; i++) {if (arr[i] === ‘.‘) continue; if (arr[i] === ‘..‘) { str.pop(); } else { str.push(arr[i]); } } >>4 ‘/‘ + str.join(‘/‘); >>"/opt/X11/bin/"
代碼很簡單,設一個結果數組arr,用split將path分離後遍歷元素。.代表當前路徑,..代表上級路徑,其他都是正常路徑。所以處理方法是:
- 正常路徑,直接push到arr裏。push的尾部即代表已到達的最後路徑
- .可以忽略
- ..代表回到上級路徑,則最後路徑失效,回到上一級,pop彈出
編程題: 自己實現bash realpath (化簡絕對路徑)