【完全ガイド】JavaScriptでオブジェクトが配列かどうかを判定する7つの方法
JavaScriptでオブジェクトが配列かどうかを確認する方法
Array.isArray()を使う
これは最もシンプルで確実な方法です。Array.isArray()
メソッドは、引数が配列であれば true
を返し、そうでなければ false
を返します。
const obj = [1, 2, 3];
console.log(Array.isArray(obj)); // true
instanceof
演算子は、オブジェクトが特定のコンストラクタのインスタンスかどうかを確認するために使用できます。
const obj = [1, 2, 3];
console.log(obj instanceof Array); // true
typeof
演算子は、オブジェクトの型を取得するために使用できます。ただし、typeof
演算子は配列とオブジェクトを区別できないため、注意が必要です。
const obj = [1, 2, 3];
console.log(typeof obj); // "object"
.length プロパティを使う
配列には length
プロパティがあり、配列内の要素数を取得できます。
const obj = [1, 2, 3];
console.log(obj.length); // 3
Array.prototype.forEach()
メソッドは、配列内の各要素に対して処理を実行できます。
const obj = [1, 2, 3];
obj.forEach((element) => {
console.log(element);
});
// 1
// 2
// 3
- 最もシンプルで確実な方法
- 配列かどうかだけを確認したい場合
instanceof 演算子を使う
- 配列とオブジェクトの区別が必要な場合
- 簡易的なチェックを行いたい場合
- 配列内の要素数も知りたい場合
// Array.isArray()を使う
const obj1 = [1, 2, 3];
const obj2 = {};
console.log(Array.isArray(obj1)); // true
console.log(Array.isArray(obj2)); // false
// instanceof 演算子を使う
const obj3 = [1, 2, 3];
const obj4 = {};
console.log(obj3 instanceof Array); // true
console.log(obj4 instanceof Array); // false
// typeof 演算子を使う
const obj5 = [1, 2, 3];
const obj6 = {};
console.log(typeof obj5); // "object"
console.log(typeof obj6); // "object"
// .length プロパティを使う
const obj7 = [1, 2, 3];
const obj8 = {};
console.log(obj7.length); // 3
console.log(obj8.length); // undefined
// Array.prototype.forEach()を使う
const obj9 = [1, 2, 3];
const obj10 = {};
obj9.forEach((element) => {
console.log(element);
});
// 1
// 2
// 3
obj10.forEach((element) => {
console.log(element);
});
// 何も出力されない
オブジェクトが配列かどうかを確認するその他の方法
Object.prototype.toString.call()
メソッドは、オブジェクトの型を文字列で返します。
const obj = [1, 2, 3];
console.log(Object.prototype.toString.call(obj)); // "[object Array]"
Array.prototype.constructor.isPrototypeOf()
メソッドは、オブジェクトが Array
コンストラクタの原型を持っているかどうかを確認します。
const obj = [1, 2, 3];
console.log(Array.prototype.constructor.isPrototypeOf(obj)); // true
for...in
ループを使って、オブジェクトのプロパティをループ処理することができます。配列は数値インデックスを持つプロパティを持つため、この方法を使ってオブジェクトが配列かどうかを確認できます。
const obj = [1, 2, 3];
let isArray = true;
for (const prop in obj) {
if (isNaN(parseInt(prop))) {
isArray = false;
break;
}
}
console.log(isArray); // true
これらの方法は、上記で紹介した方法よりも複雑ですが、より詳細な情報を提供することができます。
javascript arrays javascript-objects