2009-06-04 5 views
18

Ich erhalte die nächste JSON-AntwortWie überprüft man, ob ein JSON-Response-Element ein Array ist?

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

würde Ich mag die nächste Pseudo-Code Funktionalität

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

Jede Idee, erreichen?

Antwort

41

Es gibt andere Methoden, aber meines Wissens ist dies die verlässlichste:

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

Also, es zu Ihrem Code anwenden:

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

Es gibt jetzt eine native Funktion in JavaScript, die tu dies (['Array.isArray (obj)'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)), obwohl ältere Browser immer noch benötigt werden sich darauf als Polyfill zu verlassen. – cimmanon

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

Dies funktioniert in den meisten Situationen, aber es wird fehlschlagen, wenn Sie ein Array aus einem anderen Fenster/Frame testen, da der Konstruktor anders sein wird. – James

Verwandte Themen