【问题标题】:Loop through multidimensional JSON Array and get values in javascript循环遍历多维 JSON 数组并在 javascript 中获取值
【发布时间】:2017-05-05 20:19:06
【问题描述】:

我创建了一个 JSON 对象,其中包含两个数组。我在网上搜索了如何提取数据,但我尝试过的所有代码都返回“未定义”或 [object object]。

你能看看我的例子,告诉我我会怎么做吗?

<html>
 <head>
     <title> New Document </title>
  <meta name="Generator" content="NPP-Plugin">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
 </head>
 <body>
 <div id="file"></div>
 <div id="applicID"></div>
  <script type="text/javascript">
var IETMObj = {
    "allItems": [{ 
         "sFile": "Test.html",
         "Applicability": [{   // second dimension
                            "ApplicID": "subj_1",
                            "ApplicDisp": "Driving",
                            "Condition": "In rain"
                    },{
                            "ApplicID": "subj_2",
                            "ApplicDisp": "Running",
                            "Condition": "Uphill"
                    }]
            }]
  };

  for (var i = 0; i < IETMObj.length; i++){
      document.write("<br><br>array index: " + i);
  var obj = IETMObj[i];
  for (var key in obj){
    var value = obj[key];
    document.write("<br> - " + key + ": " + value);
  }
}


  </script>
 </body>
</html>

【问题讨论】:

  • IETMObj 是一个对象,而不是一个数组。
  • 要处理的数组是IETMObj.allItems[0].Applicability
  • @Barmar 恐怕我无法让您对代码进行更正。 js.do/MHammett/multidimensionalobj 我查看了其他问题,并尝试了他们的解决方案。他们在我的情况下不起作用。这就是我寻求帮助的原因。
  • 尝试var applicability = IETMObj.allItems[0].Applicability;,然后循环遍历applicability,就像您在代码中循环遍历IETMObj一样。

标签: javascript arrays json multidimensional-array


【解决方案1】:

ITEMObj 是一个对象,而不是一个数组。你要循环的数组是IETMObj.allItems[0].Applicability

var applicability = IETMObj.allItems[0].Applicability;
for (var i = 0; i < applicability.length; i++) {
    document.write("<br><br>array index: " + i);
    var obj = applicability[i];
    for (var key in obj){
        var value = obj[key];
        document.write("<br> - " + key + ": " + value);
    }
}

如果allItems 中可以有多个项目,则应该为它们设置一个外循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2016-07-15
    • 1970-01-01
    • 2019-12-18
    • 2013-04-01
    相关资源
    最近更新 更多