2009-06-04 82 views
18

我收到的下一个JSON响应如何检查JSON响应元素是否为数组?

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

我想实现下一个伪代码的功能

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

任何想法?

回答

41

还有其他方法,但是,据我所知,这是最可靠的:

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

因此,将其应用到你的代码:

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

现在JavaScript中有一个本地函数,它将这样做([`Array.isArray(obj)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)),虽然旧版浏览器仍然需要依靠这个作为一个polyfill。 – cimmanon 2015-09-07 13:49:51

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

这在大多数情况下都能正常工作,但是当您从不同的窗口/框架测试数组时,它会失败,因为构造函数会有所不同。 – James 2009-06-04 16:08:53