2009-06-04 3 views
18

Tôi nhận được JSON phản ứng tiếp theoCách kiểm tra xem phần tử phản hồi JSON có phải là một mảng không?

{ 
    "timetables":[ 
     {"id":87,"content":"B","language":"English","code":"en"},             
     {"id":87,"content":"a","language":"Castellano","code":"es"}], 
    "id":6, 
    "address":"C/Maestro José" 
    } 

Tôi muốn đạt được giả tiếp theo đang chức năng

for(var i in json) {    
    if(json[i] is Array) { 
    // Iterate the array and do stuff 
    } else { 
    // Do another thing 
    } 
} 

Bất kỳ ý tưởng?

Trả lời

41

Có nhiều phương pháp khác, nhưng, theo tôi biết, đây là đáng tin cậy nhất:

function isArray(what) { 
    return Object.prototype.toString.call(what) === '[object Array]'; 
} 

Vì vậy, để áp dụng nó vào mã của bạn:

for(var i in json) {      
    if(isArray(json[i])) { 
    // Iterate the array and do stuff 
    } else { 
    // Do another thing 
    } 
} 
+3

Hiện tại, có một hàm gốc trong JavaScript sẽ làm điều này (['Array.isArray (obj)'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)), mặc dù các trình duyệt cũ hơn vẫn cần dựa vào điều này như là một polyfill. – cimmanon

4
function isArray(ob) { 
    return ob.constructor === Array; 
} 
+8

Điều này sẽ làm việc trong hầu hết các tình huống nhưng nó sẽ thất bại khi bạn đang thử nghiệm một mảng từ một cửa sổ/khung khác nhau vì hàm tạo sẽ khác nhau. – James