JavaScriptでオブジェクトが配列かどうかを判定する方法【Array.isArray()など】
JavaScriptでは、ある値が配列(Array)であるかどうかを確認する方法がいくつか存在します。この記事では、代表的な判定方法とそれぞれの特徴・注意点について、サンプルコード付きでわかりやすく解説します。
1. Array.isArray() を使う方法(推奨)
Array.isArray() は ES5(ECMAScript 5)で導入された標準メソッドで、すべてのモダンブラウザでサポートされています。引数が配列であれば true、それ以外は false を返します。シンプルかつ確実に動作するため、特別な理由がない限りこの方法を使うのがおすすめです。
サンプルコード
console.log(Array.isArray(undefined))
console.log(Array.isArray(null))
console.log(Array.isArray(""))
console.log(Array.isArray({}))
console.log(Array.isArray([]))
console.log(Array.isArray([1, "hello"]))
console.log(Array.isArray(new Array()))
実行結果
false false false false true true true
undefined、null、空文字列、空オブジェクトに対しては false が返り、配列リテラルや new Array() で生成した配列に対しては true が返っていることが確認できます。
2. constructor プロパティを使う方法
arr.constructor === Array のように、constructor プロパティを比較することでも配列かどうかを判定できます。ただし、undefined や null には constructor プロパティが存在しないため、これらに対してこの方法を使うとエラーが発生する点に注意が必要です。
サンプルコード
// 以下はエラーになるためコメントアウトしています
// console.log(undefined.constructor === Array)
// console.log(null.constructor === Array)
console.log("".constructor === Array)
console.log({}.constructor === Array)
console.log([].constructor === Array)
console.log([1, "hello"].constructor === Array)
console.log(new Array().constructor === Array)
実行結果
false false true true true
3. その他の判定方法
instanceof 演算子
obj instanceof Array を使った判定も可能です。ただし、iframe など異なるグローバルスコープ(実行環境)間で配列を受け渡した場合、正しく判定できないことがあるため注意しましょう。
Object.prototype.toString.call()
Object.prototype.toString.call(obj) === '[object Array]' という判定方法は非常に堅牢で、Array.isArray() が利用できない古い環境(IE8 以前など)でも動作します。レガシーブラウザ対応が必要な場合に有効です。
まとめ
配列の判定には複数の方法がありますが、現代の開発では Array.isArray() を使うのが最も安全・簡潔で確実です。constructor や instanceof を使う方法には、特定のケースで失敗する可能性があるため、用途や対象となる環境に応じて適切な方法を選択しましょう。
-
JavaScriptでオブジェクトが配列かどうか判定する方法!Array.isArray()の使い方を実例付きで解説
JavaScriptであるオブジェクトが配列(Array)なのか、それとも別のオブジェクトなのかを判別したい場面はよくあります。そんなときに便利なのが Array.isArray() メソッドです。Array.isArray() は、引数に渡した値が配列であれば true を、そうでなければ false を返すメソッドです。この戻り値のブール値(Boolean)を確認することで、対象が配列かどうかを簡単に判定できます。Array.isArray() の基本構文Array.isArray(value)value:判定したいオブジェクトや値戻り値:配列なら true、それ以外は falsetype
-
【JavaScript】オブジェクトがクラスのインスタンスかどうかを判定する方法
JavaScriptでは、instanceof 演算子を使うことで、あるオブジェクトが特定のクラス(コンストラクタ関数)のインスタンスであるかどうかを簡単に判定できます。instanceof 演算子とは?instanceof 演算子は、左辺のオブジェクトが右辺に指定したコンストラクタ関数のプロトタイプチェーン上に存在するかどうかを評価し、その結果を真偽値(true / false)として返します。この仕組みを利用することで、オブジェクトがどのクラスから生成されたものなのかを実行時に動的にチェックできます。コード例以下は、ボタンをクリックしたときに student1 オブジェクトが Studen