2016-08-17 13 views
-3

こんにちは私は、ネストされたオブジェクトとJSON以下のファイルがあります:javascriptのconcateネストされた配列オブジェクトの値

{ 
    "Maps": { 
    "Campus": [ 
     { 
     "name": "nus", 
     "Building": [ 
      { 
      "name": "sde1", 
      "Floor": [ 
       { 
       "name": "floor1" 
       }, 
       { 
       "name": "floor2" 
       } 
      ] 
      }, 
      { 
      "name": "sde2" 
      } 
     ] 
     }, 
     { 
     "name": "ntu", 
     "Building": [ 
      { 
      "name": "ece1", 
      "Floor": [ 
       { 
       "name": "floor1" 
       }, 
       { 
       "name": "floor2" 
       }, 
       { 
       "name": "floor3" 
       } 
      ] 
      }, 
      { 
      "name": "ece2" 
      } 
     ] 
     } 
    ] 
    } 
} 

を私は上記のJSONファイルを解析し、中に以下のフォーマットを取得するにはjavascriptやNode.jsのモジュールを使用したいです配列:

nus>sde1>floor1 
nus>sde1>floor2 
ntu>ece1>floor1 
ntu>ece1>floor2 
ntu>ece1>floor3 

基本的に私はBuilding NameFloor nameCampus Nameを連結し、その間に<シンボルを配置する必要があります。

ネストされたオブジェクトフィールドFloorが存在しない場合、解析を無視して次の子オブジェクトを続行します。

これを簡単に達成するにはどうすればよいですか?ありがとう。

+0

書き込み機能。私はそれが単純なループになると思う。 – Kison

+0

@Oxi、私はループを使用しようとしましたが、コードを簡潔かつ簡潔にするための 'アンダースコア 'のようなモジュールがあるかもしれないと思いました。 – Xianlin

答えて

0

forEach()ループでこれを行い、配列に追加できます。このJSONを取得し、配列を返す

var obj = {"Maps":{"Campus":[{"name":"nus","Building":[{"name":"sde1","Floor":[{"name":"floor1"},{"name":"floor2"}]},{"name":"sde2"}]},{"name":"ntu","Building":[{"name":"ece1","Floor":[{"name":"floor1"},{"name":"floor2"},{"name":"floor3"}]},{"name":"ece2"}]}]}} 
 

 
var result = []; 
 
obj.Maps.Campus.forEach(function(e) { 
 
    e.Building.forEach(function(a) { 
 
    if (a.Floor) { 
 
     a.Floor.forEach(function(c) { 
 
     result.push(e.name + '>' + a.name + '>' + c.name); 
 
     }) 
 
    } 
 
    }) 
 
}) 
 

 
console.log(result)

関連する問題