2012-10-21 73 views
78

可能重複:
JavaScript: Check if object is array?爲什麼帶有對象的typeof數組返回「Object」而不是「Array」?

爲什麼對象的數組考慮的對象,並且不是一個數組?例如:

$.ajax({ 
    url: 'http://api.twitter.com/1/statuses/user_timeline.json', 
    data: { screen_name: 'mick__romney'}, 
    dataType: 'jsonp', 
    success: function(data) { 
     console.dir(data); //Array[20] 
     alert(typeof data); //Object 
    } 
});​ 

Fiddle

+0

這就是typeof'如何'是定義,但是你可以使用'Array.isArray'。 – pimvdb

回答

143

一個JavaScript中的怪異行爲和規範的是將typeof數組爲Object

您可以檢查變量是幾種方法的數組:

var isArr = data instanceof Array; 
var isArr = Array.isArray(data); 

但最可靠的方法是:

isArr = Object.prototype.toString.call(data) == '[object Array]'; 

既然你用jQuery標記你的問題,你可以使用jQuery的isArray功能:

var isArr = $.isArray(data); 
+4

換句話說,'typeof'永遠不會返回「Array」? – Johan

+6

「但最可靠的方法是:...」所以你建議的其他方式是不可靠的? – Alex

+9

@Alex,是的,如果你正在檢查從'