javascript concate嵌套数组对象值

时间:2016-08-17 09:50:08

标签: javascript json parsing concatenation

您好我有以下带有嵌套对象的JSON文件:

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

我想使用javascript或node.js模块来解析上面的JSON文件,并在数组中获得以下格式:

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

基本上我必须将Campus NameBuilding NameFloor name连接起来,并在其间放置一个<符号。

如果嵌套对象字段Floor不存在,请忽略该解析并继续下一个子对象。

如何以简单的方式实现这一目标?感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用forEach()循环执行此操作并添加到数组。

&#13;
&#13;
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)
&#13;
&#13;
&#13;