2017-05-05 84 views
0

我创建了一个JSON对象,它有两个数组。我在网上搜索了如何提取数据,但是我尝试过的所有代码都返回了“未定义”或者[对象对象]。通过多维JSON数组循环并获取javascript中的值

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

<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> 
+0

'IETMObj'是一个对象,而不是一个数组。 – Barmar

+0

你想要处理的数组是'IETMObj.allItems [0] .Applicability' – Barmar

+0

@Barmar恐怕我无法让你的代码工作更正。 http://js.do/MHammett/multidimensionalobj我看了其他问题,并尝试了他们的解决方案。他们没有在我的情况下工作。这就是为什么我伸出援手。 –

回答

0

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不止一个项目,你应该对他们有一个外循环。