如何循环JSON数组?

我有一些JSON代码,其中包含多个对象:

[ { "MNGR_NAME": "Mark", "MGR_ID": "M44", "EMP_ID": "1849" }, { "MNGR_NAME": "Steve", "PROJ_ID": "88421", "PROJ_NAME": "ABC", "PROJ_ALLOC_NO": "49" } ] 

我的JSON循环片段是:

 function ServiceSucceeded(result) { for(var x=0; x<result.length; x++) { } } 

你能否告诉我如何检查arrays中是否没有“MNGR_NAME”。 (在我的案例中,它出现了两次。)

您需要在迭代时访问result对象。

 for (var key in result) { if (result.hasOwnProperty(key)) { // here you have access to var MNGR_NAME = result[key].MNGR_NAME; var MGR_ID = result[key].MGR_ID; } } 

你可以使用jQuery的$ .each :

  var exists = false; $.each(arr, function(index, obj){ if(typeof(obj.MNGR_NAME) !== 'undefined'){ exists = true; return false; } }); alert('Does a manager exists? ' + exists); 

返回false会破坏每个,所以当遇到一个管理器时,迭代将停止。

请注意,您的对象是一个JavaScript对象数组。 你能用这样的东西吗?

 var array = [{ "MNGR_NAME": "Mark", "MGR_ID": "M44", "EMP_ID": "1849" }, { "MNGR_NAME": "Steve", "PROJ_ID": "88421", "PROJ_NAME": "ABC", "PROJ_ALLOC_NO": "49" }]; var numberOfMngrName = 0; for(var i=0;i 

这将在Object Array找到MNGR_NAME键的出现次数:

 var numMngrName = 0; $.each(json, function () { // 'this' is the Object you are iterating over if (this.MNGR_NAME !== undefined) { numMngrName++; } }); 

在循环result[x]是对象,所以如果你想计算一个可能存在或不存在的成员;

 function ServiceSucceeded(result) { var managers = 0 for(var x=0; x 

您可以迭代集合并检查每个对象是否包含属性:

 var count = 0; var i; for(i = 0; i < jsonObj.length; i += 1) { if(jsonObj[i]["MNGR_NAME"]) { count++; } } 

工作示例: http : //jsfiddle.net/j3fbQ/

如果您还想获取包含该属性的元素,则可以使用$ .each或$ .grep。

 filtered = $.grep(result, function(value) { return (value["MNGR_NAME"] !== undefined) }); count = filtered.length 

使用ES6 ……

 myobj1.map(items => { if(items.MNGR_NAME) { return items.MNGR_NAME; }else { //do want you want. } }) 

谢谢。