オブジェクトを含む typeof 配列が「配列」ではなく「オブジェクト」を返すのはなぜですか? [重複] 質問する

オブジェクトを含む typeof 配列が「配列」ではなく「オブジェクト」を返すのはなぜですか? [重複] 質問する

オブジェクトの配列はなぜ配列ではなくオブジェクトとみなされるのでしょうか? たとえば、次のようになります。

$.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
    }
});​

フィドル

ベストアンサー1

Javascript の奇妙な動作と仕様の 1 つは、typeof Array ですObject

変数が配列であるかどうかは、いくつかの方法で確認できます。

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

しかし、最も信頼できる方法は次のとおりです。

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

質問に jQuery のタグを付けたので、jQueryisArray関数を使用できます。

var isArr = $.isArray(data);

おすすめ記事