2011-12-13 168 views
11

我有一些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++) 
    {  

    }  
} 

可否請你讓我知道如何檢查有沒有「occurence MNGR_NAME「。 (它在我的情況下出現兩次)。

+1

在你的問題中'不''數字'? –

回答

28

您需要在迭代中訪問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; 
    } 
} 
+0

您的答案幫助我的JSON數組擺脫了不良數據。但爲什麼這些數據通過發送?你如何檢查額外的東西? – Xogle

+0

感謝您使用直接的JavaScript。 – johnny

0

這會發現在MNGR_NAME鍵的出現的次數你ObjectArray

var numMngrName = 0; 

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

你可以使用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將打破各,所以當遇到一位經理時,迭代將停止。

+0

如果你想計數,當然不應該返回false。 –

0

在循環中result[x]是對象,所以如果您想計算可能存在或可能不存在的成員;

function ServiceSucceeded(result) 
{ 
    var managers = 0 
    for(var x=0; x<result.length; x++) 
    { 
     if (typeof result[x].MNGR_NAME !== "undefined") 
      managers++; 
    } 
    alert(managers); 
} 
0

如果您還希望獲取包含屬性的元素,您可以使用$ .each或$ .grep。

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

您可以遍歷集合並檢查每個對象是否包含屬性:

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

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

2

請注意,您的目標是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<array.length;i++){ 
    if(array[i].MNGR_NAME != null){ 
     numberOfMngrName++; 
    } 
} 

console.log(numberOfMngrName);