ワイズリマインダー

JavaScriptで配列か連想配列かを判別する方法|Array.isArrayの使い方

JavaScriptで型判定したい

JavaScriptを書いていると、

「これは配列?」
「オブジェクト?」
「連想配列として扱われている?」

を判定したい場面があります。

特にJSON処理やAPIレスポンス処理ではよく使います。

 

JavaScriptの「連想配列」は実際にはObject

PHP経験者が混乱しやすいのですが、JavaScriptには厳密には

「連想配列」

という型は存在しません。

例えば、

const data = {
name: "Yasuo",
age: 30
};

これは配列ではなく、

Object

です。

 

通常配列の判定方法

配列判定なら、

Array.isArray()

を使うのが定番です。

例えば。

const data = [1,2,3];

console.log(Array.isArray(data));

結果。

true

 

Objectなら false になる

const data = {
name:"Yasuo"
};

console.log(Array.isArray(data));

結果。

false

になります。

 

typeof では判別できないことがある

初心者がやりがちなのが、

typeof data

です。

ですが、

配列でもObjectでも、

object

が返るため、正確に判定できません。

 

配列かつObjectなのがJavaScript

JavaScriptでは配列も内部的にはObject系です。

そのため、

typeof []

でも、

object

になります。

ここが混乱ポイントです。

 

null問題にも注意

さらに厄介なのが、

typeof null

も、

object

になる点です。

古くから有名なJavaScript仕様です。

 

Object判定する場合

単純Object判定なら、

!Array.isArray(data) && typeof data === 'object'

のように書くケースがあります。

ただし、

・null
・Date
・Map

などもあるため、用途次第です。

 

JSON処理ではよく使う

APIレスポンスで、

[
{...},
{...}
]

なのか、

{
result: {...}
}

なのか判定したい時によく使われます。

 

まとめ

JavaScriptで配列判定するなら、

Array.isArray()

を使うのが定番です。

typeof

だけでは、

・配列
・Object
・null

の区別が難しいため注意。

特にJavaScriptの「連想配列」は、実際にはObjectとして扱われる点を覚えておくと混乱しにくくなります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

検索

最近のコメント

最近の投稿

タグ

フィード配信

アーカイブ

外部リンク