Array.isArray()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Array.isArray() 静的メソッドは、渡された値が Array かどうかを判断します。

試してみましょう

console.log(Array.isArray([1, 3, 5]));
// Expected output: true

console.log(Array.isArray("[]"));
// Expected output: false

console.log(Array.isArray(new Array(5)));
// Expected output: true

console.log(Array.isArray(new Int16Array([15, 33])));
// Expected output: false

構文

js
Array.isArray(value)

引数

value

チェックするオブジェクト。

返値

valueArray の場合は true です。そうでなければ false を返します。 valueTypedArray インスタンスであった場合は常に false を返します。

解説

Array.isArray() は、渡された値が Array であるかどうかを調べます。値のプロトタイプチェーンを調べたり、 Array コンストラクターに頼っているわけではありません。配列リテラル構文または Array コンストラクターを使用して作成した値に対しては true を返します。このため、 Array コンストラクターの ID が異なり、instanceof Array が失敗してしまうような領域を超えるオブジェクトでも安全に使用することができます。

詳しくは、 "Determining with absolute accuracy whether or not a JavaScript object is an array" を参照してください。

また、 Array.isArray()Array.prototype をプロトタイプチェーンに持つオブジェクトも拒否しますが、 instanceof Array が受け入れる実際の配列ではありません。

Array.isArray() の使用

js
// 以下の呼び出しはすべて true を返します
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
Array.isArray(new Array("a", "b", "c", "d"));
Array.isArray(new Array(3));
// あまり知られていないものの Array.prototype は配列です
Array.isArray(Array.prototype);

// 以下の呼び出しはすべて false を返します
Array.isArray();
Array.isArray({});
Array.isArray(null);
Array.isArray(undefined);
Array.isArray(17);
Array.isArray("Array");
Array.isArray(true);
Array.isArray(false);
Array.isArray(new Uint8Array(32));
// これは配列ではありません。配列リテラルを使用した構文でも、
// Array コンストラクターでもないからです。
Array.isArray({ __proto__: Array.prototype });

instanceof と Array.isArray()

Array のインスタンスをチェックする際、 Array.isArray は領域を超えても動作するので、 instanceof よりも推奨されます。

js
const iframe = document.createElement("iframe");
document.body.appendChild(iframe);
const xArray = window.frames[window.frames.length - 1].Array;
const arr = new xArray(1, 2, 3); // [1, 2, 3]

// 配列を正しくチェックできます
Array.isArray(arr); // true
// arr のプロトタイプは xArray.prototype であり、
// Array.prototype とは異なるオブジェクトです。
arr instanceof Array; // false

仕様書

Specification
ECMAScript® 2025 Language Specification
# sec-array.isarray

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
isArray

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報