javascript 配列であるかを判定する

javascript 配列であるかを判定する

javascriptで、Array.isArrayかinstanceofを使って、配列であるかを判定する方法を記述してます。

環境

  • OS windows11 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 106.0.5249.103

Array.isArray使い方

Array.isArrayを使うと、配列であるかを判定することが可能です。

Array.isArray( 判定したい値 )

Array.isArray結果

let hoge;

//配列
hoge = ["a", "b", "c"];
console.log(Array.isArray(hoge)); // true

//空配列
hoge = [];
console.log(Array.isArray(hoge)); // true

//空2次元配列
hoge = [[],[]];
console.log(Array.isArray(hoge)); // true

//配列の空連想
hoge = [{}];
console.log(Array.isArray(hoge)); // true

//連想配列
hoge = {key1:'a', key2:'b', key3:'c'};
console.log(Array.isArray(hoge)); // false

//空連想配列
hoge = {};
console.log(Array.isArray(hoge)); // false

//文字列
hoge = "a";
console.log(Array.isArray(hoge)); // false

//null
hoge = null;
console.log(Array.isArray(hoge)); // false

//undefined
hoge = undefined;
console.log(Array.isArray(hoge)); // false

instanceof使い方

instanceofを使っても、同様の結果が得られます。

instanceof結果サンプル

let hoge;

//配列
hoge = ["a", "b", "c"];
console.log(hoge instanceof Array); // true

//空配列
hoge = [];
console.log(hoge instanceof Array); // true

//空2次元配列
hoge = [[],[]];
console.log(hoge instanceof Array); // true

//配列の空連想
hoge = [{}];
console.log(hoge instanceof Array); // true

//連想配列
hoge = {key1:'a', key2:'b', key3:'c'};
console.log(hoge instanceof Array); // false

//空連想配列
hoge = {};
console.log(hoge instanceof Array); // false

//文字列
hoge = "a";
console.log(hoge instanceof Array); // false

//null
hoge = null;
console.log(hoge instanceof Array); // false

//undefined
hoge = undefined;
console.log(hoge instanceof Array); // false

どちらを使用しても、パフォーマンスは、ほぼ同じです。

Object.prototype.toString

「Object.prototype.toString」オブジェクトの[[Class]]を使用して判定することも可能です。

Object.prototype.toString結果サンプル

let hoge;

let toString = Object.prototype.toString

//配列
hoge = ["a", "b", "c"];
console.log(toString.call(hoge).slice(8, -1) === 'Array'); // true

//空配列
hoge = [];
console.log(toString.call(hoge).slice(8, -1) === 'Array'); // true

//空2次元配列
hoge = [[],[]];
console.log(toString.call(hoge).slice(8, -1) === 'Array'); // true

//配列の空連想
hoge = [{}];
console.log(toString.call(hoge).slice(8, -1) === 'Array'); // true

//連想配列
hoge = {key1:'a', key2:'b', key3:'c'};
console.log(toString.call(hoge).slice(8, -1) === 'Array'); // false

//空連想配列
hoge = {};
console.log(toString.call(hoge).slice(8, -1) === 'Array'); // false

//文字列
hoge = "a";
console.log(toString.call(hoge).slice(8, -1) === 'Array'); // false

//null
hoge = null;
console.log(toString.call(hoge).slice(8, -1) === 'Array'); // false

//undefined
hoge = undefined;
console.log(toString.call(hoge).slice(8, -1) === 'Array'); // false