2016-08-17 4 views
-3

Hallo ich die unten JSON-Datei mit verschachtelten Objekt haben:javascript concate verschachtelte Array Objektwert

{ 
    "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" 
      } 
     ] 
     } 
    ] 
    } 
} 

Ich möchte Javascript verwenden oder node.js Module die oben JSON-Datei und erhalten das folgende Format in ein analysieren Array:

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

im Grunde muss ich eine < Symbol zwischen den Campus Name mit Building Name und Floor name und legte verketten.

Wenn das verschachtelte Objektfeld Floor nicht vorhanden ist, ignorieren Sie die Syntaxanalyse und fahren Sie mit dem nächsten untergeordneten Objekt fort.

Wie erreicht man das auf einfache Weise? Vielen Dank.

+0

Schreibfunktion, die diese json nehmen und Array zurück. Ich denke, es wird eine einfache Schleife sein. – Kison

+0

@Oxi, ich habe versucht, eine Schleife zu verwenden, aber ich dachte, es könnte einige Module wie "Unterstrich" geben, um den Code kurz und knapp zu machen. – Xianlin

Antwort

0

Sie können dies mit forEach() Schleife tun und zum Array hinzufügen.

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)

Verwandte Themen