2011-12-13 40 views
11

Tôi có một số JSON-code trong đó có nhiều đối tượng trong đó:Làm thế nào để lặp qua mảng JSON?

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

đoạn vòng lặp JSON của tôi là:

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

    }  
} 

Ông có thể xin vui lòng cho tôi biết làm thế nào để kiểm tra không có sự xuất hiện của " MNGR_NAME "trong mảng. (Nó xuất hiện hai lần trong trường hợp của tôi.)

+1

có 'không' trong câu hỏi của bạn có nghĩa là 'số'? –

Trả lời

28

Bạn cần truy cập đối tượng result khi lặp lại.

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

Câu trả lời của bạn đã giúp mảng JSON của tôi tự thoát khỏi dữ liệu không hợp lệ. Nhưng tại sao dữ liệu lại được gửi qua? Làm thế nào đến bạn phải kiểm tra thêm rằng nếu? – Xogle

+0

Cảm ơn bạn đã sử dụng JavaScript thẳng. – johnny

0

này sẽ tìm ra số lần xuất hiện của khóa MNGR_NAME trong bạn ObjectArray:

var numMngrName = 0; 

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

Bạn có thể sử dụng của 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); 

Trở false sẽ phá vỡ từng, vì vậy khi một người quản lý gặp phải, việc lặp lại sẽ dừng lại.

+0

Nếu bạn muốn đếm, bạn không nên trả về 'false', tất nhiên. –

0

Trong vòng lặp result[x] là đối tượng, vì vậy nếu bạn muốn đếm thành viên có thể có hoặc không có mặt;

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

Bạn có thể sử dụng $ .each hoặc $ .grep, nếu bạn cũng muốn lấy các phần tử chứa thuộc tính.

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

Bạn có thể lặp qua các bộ sưu tập và kiểm tra từng đối tượng nếu nó có chứa tài sản:

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

dụ làm việc: http://jsfiddle.net/j3fbQ/

2

Lưu ý rằng đối tượng của bạn là một mảng của các đối tượng JavaScript. Bạn có thể sử dụng một cái gì đó như thế này?

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); 
Các vấn đề liên quan