配列・連想配列

【JavaScript】配列のインデックスが存在しないのか値がundefinedなのかを確認する方法

更新日:2023/07/11

JavaScriptは変数やプロパティが存在しないときundefinedを返します。
また、変数やプロパティはundefinedという値を持つことができます。
存在しないのか値がundefinedなのか確認したい、というお話です。

 

どちらもundefined

次のような配列を考えてみます。

const ary = [1,2, ,undefined,5,6];

これで作成される配列aryは、インデックス2が作成されません。
インデックス3は作成され、値にundefinedがセットされます。

この二つのインデックスをコンソール出力してみます。

console.log( ary[2] ); // 結果: undefined
console.log( ary[3] ); // 結果: undefined

両方とも、undefinedになりました。
単純に undefined と比較しただけでは、インデックスが存在しないのか、値が undefined なのかわかりませんね。

 

インデックスが存在するか確認する

配列にインデックスが存在しないのか、それとも値がundefinedなのか。
hasOwnProperty()メソッドで確認できます。

このメソッドはオブジェクト自身が特定のプロパティを持っているか確認するメソッドです。
配列もオブジェクトなので、使用できます。

const ary = [1,2, ,undefined,5,6];
console.log( ary.hasOwnProperty( 2 ) ); // 結果: false
console.log( ary.hasOwnProperty( 3 ) ); // 結果: true

インデックス2は結果がfalseなので、インデックスが存在しないことがわかります。
インデックス3は結果がtrueなので、インデックスが存在していて値がundefinedということがわかります。

 

undefinedは避けよう

JavaScriptは言語仕様上、インデックスが存在しないのか値がundefinedなのかが分かりにくい特徴があります。
そのため、undefinedを変数やプロパティの値として使用すると、プログラムコードの意図が分かりにくくなる可能性があります。

undefinedを値として使用するのは避けた方が無難ですね。

更新日:2023/07/11

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。