2016-09-27 14 views
0

私はツリー/オブジェクト構造を作成する必要があるURIのリストを持っています。例えば、ここでのURIURIのパスツリーを構築する

/api/abc/xyz/abc/cde 
/api/xyz/abc/d3/d2 
/api/abc/cde/d3/d2 
/api/abc/cde/d1/d2 

で結果ツリーは、私はJavaScriptでこれを行う必要があり、この

{ 
    api: { 
     abc: { 
      xyz: { 
       abc: { 
        cde: {} 
       } 
      }, 
      cde: { 
       d3: { 
        d2: {} 
       }, 
       d1: { 
        d2: {} 
       } 
      } 
     }, 
     xyz: { 
      abc: { 
       d3: { 
        d2: {} 
       } 
      } 
     } 
    } 
} 

のようになります。私はこれを構築するために使用できるアルゴリズムはありますか?私は以下のコードから始めましたが、ちょっと迷ってしまいました!!

paths=['/api/abc/xyz/abc/cde', 
'/api/xyz/abc/d3/d2', 
'/api/abc/cde/d3/d2', 
'/api/abc/cde/d1/d2' ]; 

var apiResources = {}; 
    for(var i in paths) { 
     var path = paths[i]; 
     //split by '/' 
     var parts = path.split("/"); 
     var node = apiResources; 
     for (var i = 0; i < parts.length; i++) { 
      if (!node[parts[i]]) { 
       node[parts[i]] = {}; 
      } 
      node = node[parts[i]]; 
     } 
    } 
+1

そう簡単です。何か試しましたか? – Tempux

+0

@ sudomakeinstall2はい、私はしました。私は今編集で私のコードを提出した。ありがとうございます –

+0

しかし、それはすでにあなたが望むことをしていますか?最初の要素( '[" "、" api "、" abc "、" xyz "、" abc "、" cde "]')をスキップしたいかもしれません。 – Caramiriel

答えて

0
var string="a/b/c"; 
keys=string.split("/"); 
var obj={}; 
var index=obj; 
for(let i=0;i<keys.length;i++){ 
index=index[keys[i]]={}; 
} 

OBJは今オブジェクトとして文字列が含まれている必要があります。あなたは複数のアトリングでそれを繰り返すことができます

関連する問題