为URL的每个段创建URL字符串数组

时间:2016-11-06 00:51:23

标签: javascript arrays regex

我需要使用未知数量的/ segments /.

的url字符串创建和数组
str = "/about/history/today/";

所需的数组看起来像这样

array = ["/about/history/today/", "/about/history/", "/about/"];

我最好的猜测是将字符串拆分为数组以获取计数。然后将字符串推送到新数组,减去最后一个段,推送,重复。不幸的是,我无法弄清楚正则表达式是否会切断最后一段。创建一个数组只是为了计算只创建一个全新的数组似乎很愚蠢。

更新我想我想出来了

var str = "/about/history/today/";
var array = str.split("/");

array.pop();
array.shift();
array.reverse();

var finalArray = [str];

_.forEach(array, function(value) {  
     str = str.replace(value + "/","");   
     finalArray.push(str);  
 });

1 个答案:

答案 0 :(得分:0)

以下是reduce函数的一个很好的解决方案:

var t = "/about/history/today/".split("/").reduce(function(a, b) { 
  if (b != '' && a) { 
    a.push(b);
  } 
  return a 
}, []).reduce(function(a, b, index, ar) {
  a.push("/" + ar.slice(0, ar.length-index).join("/") + "/");
  return a;
  }, []);

console.log(t)