Array.isArray() メソッドの使い方
JavaScriptで変数が配列かどうかを確認する方法
Array.isArray() メソッドを使う
これは、変数が Array
オブジェクトかどうかを直接チェックする最も簡単な方法です。
const isArray = Array.isArray(variable);
if (isArray) {
// 変数は配列です
} else {
// 変数は配列ではありません
}
instanceof
演算子は、変数のプロトタイプチェーンを遡って、指定されたオブジェクトのプロトタイプを持っているかどうかを確認します。
const isArray = variable instanceof Array;
if (isArray) {
// 変数は配列です
} else {
// 変数は配列ではありません
}
length プロパティを確認する
配列は length
プロパティを持ち、これは配列内の要素数を持っています。
const isArray = variable.length !== undefined;
if (isArray) {
// 変数は配列です
} else {
// 変数は配列ではありません
}
- 他のオブジェクトとの互換性を考慮する必要がある場合は、
instanceof
演算子を使う方法が良いでしょう。 - シンプルな方法でチェックしたい場合は、
length
プロパティを確認する方法を使うことができます。
その他の注意点
- 上記の方法はいずれも、変数が
Array
オブジェクトかどうかをチェックします。 - 配列のようなオブジェクト (配列リテラルなど) も、これらの方法で
true
と判定されます。 - 厳密に配列かどうかを確認したい場合は、
Array.isArray()
メソッドを使うことをおすすめします。
// サンプルコード
// 配列
const array = [1, 2, 3];
// 配列のようなオブジェクト
const arrayLikeObject = {
0: 1,
1: 2,
2: 3,
length: 3,
};
// 文字列
const string = "Hello, world!";
// 数値
const number = 123;
// オブジェクト
const object = {
name: "John Doe",
age: 30,
};
// Array.isArray() メソッドを使用
console.log(Array.isArray(array)); // true
console.log(Array.isArray(arrayLikeObject)); // false
console.log(Array.isArray(string)); // false
console.log(Array.isArray(number)); // false
console.log(Array.isArray(object)); // false
// instanceof 演算子を使用
console.log(array instanceof Array); // true
console.log(arrayLikeObject instanceof Array); // false
console.log(string instanceof Array); // false
console.log(number instanceof Array); // false
console.log(object instanceof Array); // false
// length プロパティを使用
console.log(array.length !== undefined); // true
console.log(arrayLikeObject.length !== undefined); // true
console.log(string.length !== undefined); // true
console.log(number.length !== undefined); // false
console.log(object.length !== undefined); // false
出力結果
true
false
false
false
false
true
false
false
false
false
true
true
false
false
false
JavaScriptで変数が配列かどうかを確認する他の方法
Object.prototype.toString.call()
メソッドは、オブジェクトの型を文字列で返します。
const isArray = Object.prototype.toString.call(variable) === '[object Array]';
if (isArray) {
// 変数は配列です
} else {
// 変数は配列ではありません
}
Array.prototype.constructor
プロパティは、配列オブジェクトのコンストラクタを指します。
const isArray = variable.constructor === Array;
if (isArray) {
// 変数は配列です
} else {
// 変数は配列ではありません
}
for...in
ループを使用して、変数のプロパティをループ処理し、length
プロパティが存在するかどうかを確認できます。
const isArray = (function() {
for (const prop in variable) {
if (prop === 'length') {
return true;
}
}
return false;
})();
if (isArray) {
// 変数は配列です
} else {
// 変数は配列ではありません
}
- 上記の方法でうまくいかない場合は、他の方法を試してみる必要があります。
注意:
上記の方法の中には、古いブラウザではサポートされていないものがあります。
javascript arrays list