1. ホーム
  2. ジャバスクリプト

[解決済み】オブジェクトを含むtypeof配列は、なぜ "array "ではなく、"object "を返すのでしょうか?[重複あり]

2022-04-09 17:37:46

質問

<ブロッククオート

重複の可能性があります。

JavaScriptを使用しています。オブジェクトが配列かどうかをチェックする

なぜ、オブジェクトの配列はオブジェクトとみなされ、配列ではないのですか?例えば

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

フィドル

解決方法は?

Javascriptの奇妙な挙動と仕様の1つに、typeof Arrayが 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);