url分割并为每个元素加入_ JavaScript

时间:2019-04-23 12:38:05

标签: javascript

假设我们有这个URL“ / user / id”。

let url = "/user/id"

所以我需要分割这些URL并创建一个单独的URL。像这样的东西:

["/", "/user", "/user/id"]

我可以用 .split(“ /”)进行拆分。我认为拆分后需要一些 forEach(),但我做对了。

2 个答案:

答案 0 :(得分:4)

实际上,如果使用indexOf查找斜线并使用.slice获取零件,则更容易:

 const result = ["/"];
  let pos = 1;

 while(true) {
   pos = url.indexOf("/", pos + 1);
   if(pos < 0) break;
   result.push(url.slice(0, pos + 1));
 } 

 result.push(url);

或者“功能性方法”将是:

 url.split("/").map((_, i, arr) => arr.slice(0, i + 1).join("/") || "/");

答案 1 :(得分:1)

For-loop解决方案:

https://jsfiddle.net/c9asnfw4/1/

let url = '/user/id', 
    result = ['/'],
    parts = url.split('/'); 

for(let i = 1; i < parts.length; i++) { // Skip first /
    const part = parts[i];

    if(i === 1) { // Start slash is already existing
        result.push(result[i-1] + part);
    } else if(i > 1) {
        result.push(result[i-1] + '/' + part);
    }
}

输出

  

(3)[“ /”,“ / user”,“ / user / id”]


编辑:略微缩短:

let url = '/user/id', 
    result = ['/'],
    parts = url.split('/'); 

for(let i = 1; i < parts.length; i++) { // Skip first /
    result.push( (result[i-1]) + (i > 1 ? '/' : '') + parts[i] );
}

https://jsfiddle.net/c9asnfw4/2/