2009-06-04 137 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