Typescript中的JSON循环嵌套数组

时间:2018-09-26 13:27:51

标签: javascript arrays json angular typescript

我正在尝试获取以下提到的json数组的“ id”的值,但由于包含两个“ [[”数组大括号,所以无法得到结果,有人可以帮助我吗出来,如果循环运行一次,我也会从另一个循环中获取这些JSON数组,而我正在获取单个数组大括号“ [”;如果循环运行了多次,我会得到“ [[]大括号...

[  
   [  
      {  
         "attributes":{  
            "id":"Task_1yett21"
         },
         "incoming":"SequenceFlow_112bxv0",
         "outgoing":"SequenceFlow_1gkdhq3"
      },
      {  
         "attributes":{  
            "id":"Task_0i5lteb"
         },
         "incoming":"SequenceFlow_1gkdhq3",
         "outgoing":"SequenceFlow_1gjii2n"
      },
      {  
         "attributes":{  
            "id":"Task_1v37yfe"
         },
         "incoming":"SequenceFlow_1gjii2n",
         "outgoing":"SequenceFlow_0bygyft"
      }
   ]
]

我正在调用此函数以获取上述数组中的JSON对象...

var getAllValuesOfKey = function (dataObj, queryKey) {
      var resultArr = [];
      if (!queryKey) {
          return resultArr;
      }

      function execute(dataObj, queryKey) {
          Object.keys(dataObj).forEach(function (key, index) {
              if (typeof dataObj[key] == 'object' && !(dataObj[key] instanceof Array)) {   
                  if (key == queryKey) {
                      resultArr.push(dataObj[key]);
                  }
                  execute(dataObj[key], queryKey);
              } else if (key == queryKey) {
                  resultArr.push(dataObj[key]);
              }
          });
      }
      execute(dataObj, queryKey);
      return resultArr;
  } 
  var searchKey = 'task';
  var result=getAllValuesOfKey(obj1, searchKey);

2 个答案:

答案 0 :(得分:0)

您可以在循环中选择内部数组,外部数组的索引为0,如下所示:

var myDoubleArray: any = [[{...}, {...}, {...}]];
for (let i = 0; i < myDoubleArray[0].length; i++) {
  console.log(myDoubleArray[0][i].attributes.id);
}

如果数组仍为JSON格式,则需要先将其解析为JavaScript,然后才能遍历数据。这可以通过JSON.parse()完成。

答案 1 :(得分:0)

var arr = [  
   [  
      {  
        "attributes":{  
           "id":"Task_1yett21"
        },
        "incoming":"SequenceFlow_112bxv0",
        "outgoing":"SequenceFlow_1gkdhq3"
     },
     {  
        "attributes":{  
           "id":"Task_0i5lteb"
        },
        "incoming":"SequenceFlow_1gkdhq3",
        "outgoing":"SequenceFlow_1gjii2n"
     },
     {  
        "attributes":{  
           "id":"Task_1v37yfe"
        },
        "incoming":"SequenceFlow_1gjii2n",
        "outgoing":"SequenceFlow_0bygyft"
     }
  ]
]

for (var i in arr[0]) {
  //arr[0][i].attributes.id will give you the id
  console.log(arr[0][i].attributes.id);
}