1. 程式人生 > >編程題: 自己實現bash realpath (化簡絕對路徑)

編程題: 自己實現bash realpath (化簡絕對路徑)

方法 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分離後遍歷元素。.代表當前路徑,..代表上級路徑,其他都是正常路徑。所以處理方法是:

  1. 正常路徑,直接push到arr裏。push的尾部即代表已到達的最後路徑
  2. .可以忽略
  3. ..代表回到上級路徑,則最後路徑失效,回到上一級,pop彈出

編程題: 自己實現bash realpath (化簡絕對路徑)