2016-11-06 6 views
1

未知数の/ segments /を持つURL文字列を作成して配列から作成する必要があります。URLの各セグメントの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); 
}); 
+0

そう... "最高の推測" - これまでに何を試しましたか? – Dekel

+0

実際、私はちょうどそれを分かったと思う、分割の配列を使って、最後のセグメントを文字列から置き換えて新しい配列にプッシュすることができた。 –

+0

最後のセグメントにマッチする正規表現:\/\ w + \/$ 'でも最初のバックスラッシュと一致します。おそらく最初のバックスラッシュを使わずにregexを使い、配列にプッシュすることで先行するバックスラッシュを追加するべきでしょう。 –

答えて

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)

+0

これは本当に面白いですが、今は '.reduce'と' .map'について学んでいます。私の頭をこの周りに包み込む時間をください...ありがとう! –

+0

このコードをお寄せいただきありがとうございます。 –

+0

あなたは将来の復帰が可能で、その評判が十分にある場合に投票することができます(最低15人必要) – Dekel

関連する問題