目标:找a->b的相对路径
分析:
1、首先需要把a、b绝对路径分割成数组形式(使用split()方法,以/为分割点),
2、其次我们申请一个空的字符串str用于存放最终相对路径。
比较两个数组里的元素,如果相同位置的值相同,那么说明他两在在同一文件夹下,此时向str加入‘…/ '。
否则就加上目标b数组中 对应位置元素+"/" 符号。直至到最末尾
3、最后,别忘记,最后一个元素后面还会多了个“/”,需要我们手动处理 给删除掉.
用到的知识点:数组和字符串的操作。
var A="a/b/c/d/e/hp.js";
var B="a/b/f/cx.js";
function relativePath(){
var str='';
var a=A.split("/"); //split("字符串或正则表达式",length数组最多个数)
var b=B.split("/");
for(i=1;i<b.length;i++){
if(a[i]===b[i]){
str=str+'../';
}else{
str=str+b[i]+"/";
}
}
return str.substr(0,str.length-1); //处理末尾多的/
}
console.log(relativePath(A,B));
`
最终结果:
干脆把常用的数组字符串方法总结一下
数组:
-
push()/unshift() 向数组尾/头添加元素,返回新的长度。会【改变】原数组的值
-
pop()/shift() 向数组尾/头删除元素,返回新的长度。 【改变】
-
reverse() 颠倒数组中元素的顺序。 【改变】
-
sort () 排序(按类似字符串的方式逐位比较) 【改变】
-
splice () 删除元素,并添加新元素。返回删除元素。 【改变】
-
slice( ) 返回选定的元素。(注意下标eg:2-5,返回的是下标为2、3、4的)
-
toSring () 把数组转换为字符串,并返回结果。
-
valueOf () 返回数组对象的原始值
-
charAt() 返回指定索引位置的字符
字符串:
- slice() 提取字符串的片断,并在新的字符串中返回被提取的部分
- split() 将字符串分割成数组形式 【不改】
- substr(start,length)从字符串中取从start 下标开始的指定数目的字符。
- search() 检索匹配的值
- replace() 替换匹配到的值
- match() 找一或多个的匹配
- substring() 提取字符串中两个指定的索引号之间的字符
- indexOf() 返回字符串中检索指定字符第一次出现的位置
- toString() 返回字符串对象值
- valueOf()