2017.4.7
2020.1.7

変数が配列かどうか判定する方法

JavaScriptまたはjQueryで、変数が配列かどうかを判定する方法についてです。

JavaScript単体で正しく判定するには、文字列に変換してから判定しないといけないらしく、ちょっと意外でした。

目次

  • JavaScript
  • jQuery
  • 参考リンク

JavaScript

Array.isArray()を使って判定(IE8で使えない)


alert(Array.isArray([]));   // true
alert(Array.isArray({}));   // false

instanceofを使って判定


alert([] instanceof Array);     // true
alert({} instanceof Array);     // false

instanceofを使った判定方法でも大抵の場合は問題ないようですが、フレームを使った場合に親ページの変数を判定しようとするとうまくいかないとかなんとか。最近はフレームを使った開発はあまりないと思いますが、詳しくは参考リンクで確認してください。

正しく判定するためには以下のように文字列に変換して判定するようです。


alert(isArray([]));    // true
alert(isArray({}));    // false

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

jQuery

$.isArray()で判定


alert($.isArray([]));   // true
alert($.isArray({}));   // false

参考リンク

JavaScript】関連記事