Javascript 比较路径

Javascript 比较路径,javascript,path,location,pathname,Javascript,Path,Location,Pathname,在我的函数中,用户输入一个路径,如。/images/profile',我需要检查页面的当前路径是否与他通过的路径相同。 即。检查path==location.pathname 如果location.pathname为/scripts且输入的路径为/./parent/scripts,其中parent为脚本的父目录,则比较应返回true,如果输入的路径为/./parent/images等,则应返回false。 那么在JS中有什么方法可以比较两条路径吗?没有内置的方法来比较或解析路径。您将不得不求助于

在我的函数中,用户输入一个路径,如
。/images/profile'
,我需要检查页面的当前路径是否与他通过的路径相同。 即。检查
path==location.pathname

如果
location.pathname
/scripts
且输入的路径为
/./parent/scripts
,其中parent为脚本的父目录,则比较应返回
true
,如果输入的路径为
/./parent/images
等,则应返回
false

那么在JS中有什么方法可以比较两条路径吗?

没有内置的方法来比较或解析路径。您将不得不求助于解析字符串,或者某种黑客手段,比如在隐藏的iframe中加载相对路径,并检查其
位置href
是否等于当前窗口的
位置href
。。。我并不是在提倡这种方法。

var p=currentpath+inputpath;
var p = currentpath + inputpath;
var frags = p.split("/");
for (var i=0; i<frags.length; i++) {
    if (i>0 && frags[i] == "..") {
        frags.splice(i-1, 2);
        i -= 2;
    } else if (!frags[i] && frags[i][0] == ".") { // removes also three or more dots
        frags.splice(i, 1);
        i--;
    }
}
return frags.join("/") == suggestedpath;
var frags=p.split(“/”); 对于(变量i=0;变量i=0&&frags[i]=“.”){ 碎片拼接(i-1、2); i-=2; }如果(!frags[i]&&frags[i][0]==”){//也会删除三个或更多点 碎片拼接(i,1); 我--; } } return frags.join(“/”==suggestedpath;
我们应该完成这项任务。也许regexp会更短,但它不允许在数组中导航:-)


您可以通过调用:
comparePath(path,location.pathname)获得结果

当比较以通常命名的子目录结尾的任何路径时,如
foo/bar
fizz/bar
,这将给出一个假阳性。
function comparePath(path1, path2) {
  var path1Dir = path1.substring(path1.lastIndexOf('/'));
  var path2Dir = path2.substring(path2.lastIndexOf('/'));
  return path1Dir == path2Dir;
}