javascript求相对路径

          求相对路径的思路:

           比如 

                  var path1 = "D://su/ni/you/tas/you/d.html";
              var path2 = "D://su/ni/you/tas/b.html";

            如果相对于path1求path2的相对路径,去掉"D://",将剩下的字符串转为数组。

            p1 = ['su','ni','you','tas','you','d.html']    p2 = ['su','ni','you','tas','b.html']

            然后for循环,依次比较p1和p2的元素,例子中,p1[4] != p2[4]   那么d.html要向上走p1.length - 4 值为2.

           也就是   ../../  。p2[4] 的值为 b.html   。 将两者进行拼接, ../../b.html  就是path1相对于path2的相对路径。

           ps 记得要对盘符进行判断,如果不在同一个盘符,那也就没有相对路径一说了。以下是具体实现代码。

<script>
    var path1 = "D://su/ni/you/tas/you/d.html";
    var path2 = "D://su/ni/you/tas/b.html";
    //求path1 相对于 path2 的相对路径。  ../../you/tas/b.html
    function contrast(p1,p2){
        if(p1.substr(0,1).toUpperCase() != p2.substr(0,1).toUpperCase()){
               return "不在同一个根目录";
        }
        var arrPath1 = p1.substr(4).split('/');
        var arrPath2 = p2.substr(4).split('/');
        for(var i=0;i<path1.length;i++){
              console.log(i);
            if(arrPath1[i] != arrPath2[i]){
                if(arrPath1.length - i > 1){
                      var str = '';
                    
                      for(var j=0;j<arrPath1.length-i;j++){
                            str += '../';
                      }
                      str += arrPath2.slice(i).join("/");
                }
                if(arrPath1.length - i == 1){
                    var str="./";
                    str += arrPath2[i];
                }
               return str;
            }
        }
    }
    console.log(contrast(path1,path2));
</script>
原文地址:https://www.cnblogs.com/sujianfeng/p/8560785.html