如何在JavaScript和jQuery中迭代json对象数组?

问题描述:

我正在学习JavaScript和json对象和数组。我已被赋予迭代以下任务的任务:如何在JavaScript和jQuery中迭代json对象数组?

{"6784": 
    {"OD": 
     [ 
      { 
       "od_id":"587641", 
       "cl_type":"scl", 
       "cl_eye":"OD" 
      } 
     ], 
    } 
    {"OS": 
     [ 
      { 
       "od_id":"587641", 
       "cl_type":"scl", 
       "cl_eye":"OD" 
      } 
     ], 
    } 
} 

我试图迭代简单的循环和jquery每个,但它不工作。条件是我们不知道任何关键名称。

+0

直视[...用于在(https://开头developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for ...在) –

+0

显示你的努力。 – Shubham

+0

尝试$ .each(yourarray,function(index,item){}) –

如果您不知道密钥名称,可以使用Object.keys(json_obj)。

Object.keys(json_obj).forEach(function(key){ 
    stuff 
} 

您可以使用:

Object.keys(Obj) 

到你的对象识别属性,然后可以遍历它来寻找每个属性的值。

{}表示对象,而不是一个数组,你可以通过多种方式遍历其属性:

Iterate through object properties

你也可能想看看:

looping through an object (tree) recursively

您的JSON不是有效的JSON。 enter image description here

有效的JSON应该是这样的: enter image description here

工作演示

var jsonObj = { 
 
\t "6784": { 
 
\t \t "OD": [{ 
 
\t \t \t "od_id": "587640", 
 
\t \t \t "cl_type": "scl", 
 
\t \t \t "cl_eye": "OD" 
 
\t \t }], 
 
\t \t "OS": [{ 
 
\t \t \t "od_id": "587641", 
 
\t \t \t "cl_type": "scl", 
 
\t \t \t "cl_eye": "OD" 
 
\t \t }] 
 
\t } 
 
}; 
 

 
var keys = Object.keys(jsonObj); 
 
for (var i in keys) { 
 
    var innerKeys = Object.keys(jsonObj[keys[i]]); 
 
    for (var j in innerKeys) { 
 
    console.log(jsonObj[keys[i]][innerKeys[j]][0].od_id); 
 
    } 
 
}

**index.html** 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>Document</title> 


</head> 
<body> 

<div id="content"></div> 



<script 
src="https://code.jquery.com/jquery-3.2.1.min.js" 
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" 
crossorigin="anonymous"></script> 

<script src="js/main.js"></script> 

</body> 
</html> 



**js/main.js** 

$(document).ready(function(){ 

console.log(data) 

function parse(data){ 

for (var item in data['6784']) { 
    for (var i = 0; i < data['6784'][item].length; i++) { 
     var od_id = data['6784'][item][i].od_id; 
     var cl_type = data['6784'][item][i].cl_type; 
     var cl_eye = data['6784'][item][i].cl_eye; 

     console.log(item + ', ' + od_id + ', ' + cl_type + ', ' + cl_eye); 

     $("#content").append(
     '<div class="row">'+ 
     '<p><span class="item">item: </span> ' + item + '</p>'+ 
     '<p><span class="item">od_id: </span> ' + od_id + '</p>'+ 
     '<p><span class="item">cl_type: </span> ' + cl_type + '</p>'+ 
     '<p><span class="item">cl_eye: </span> ' + cl_eye + '</p>'+ 
     '</div> <br>' 
    ); 

    } 
    } 

} 

$.ajax({ 
url: 'data.json', 
dataType: "json", 
success: parse, 

}); 
}); 





**data.json** 

{"6784": 
    {"OD": 
     [ 
      { 
       "od_id":"587641", 
       "cl_type":"scl", 
       "cl_eye":"OD" 
      } 
     ], 
    "OS": 
     [ 
      { 
       "od_id":"58764-2", 
       "cl_type":"scl-2", 
       "cl_eye":"OS" 
      } 
     ] 
    } 
} 
+0

u should比较ur json和我的json数据,然后你可以使用我所有的代码。 – memre