2009-06-04 9 views
18

estoy recibiendo la siguiente respuesta JSON¿Cómo comprobar si un elemento de respuesta JSON es una matriz?

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

me gustaría lograr el seudo código siguiente funcionalidad

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

Alguna idea?

Respuesta

41

Hay otros métodos, pero, que yo sepa, esta es la más fiable:

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

lo tanto, para aplicarlo a su código:

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

Ahora hay una función nativa en JavaScript que hacer esto (['Array.isArray (obj)'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)), aunque los navegadores más antiguos seguirán necesitando confiar en esto como un relleno policristalino. – cimmanon

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

Esto funcionará en la mayoría de las situaciones pero fallará cuando esté probando una matriz desde una ventana/marco diferente ya que el constructor será diferente. – James

Cuestiones relacionadas