1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptで、ある配列のインデックスに値が存在するかどうかを確認するにはどうすればよいですか?

2022-04-28 16:43:13

質問

の位置の値が正しいかどうかをテストするために使用できますか? index が存在するかどうか、あるいはもっと良い方法があるかどうか。

if(arrayName[index]==""){
     // do stuff
}

解決方法は?

概念的には、JavaScriptの配列は array.length 要素から始まり array[0] まで array[array.length - 1] . インデックスを持つ配列要素 i の場合、配列の一部であると定義されます。 i の間にある 0array.length - 1 を包含しています。 iがこの範囲になければ、配列には含まれません。

つまり、配列はゼロから始まって最大まで続く直線的なものであり、その範囲内にエントリーが存在しない「ギャップ」が存在する仕組みはないのです。 ある位置のインデックス(インデックスは0または正の整数)に値が存在するかどうかを調べるには、文字通り、次のようにします。

if (i >= 0 && i < array.length) {
  // it is in array
}

なぜなら動的言語ではあまり意味をなさないし、特定のコードでは非効率だからです。 おそらくハッシュテーブルか、そのハイブリッドな混合戦略で、配列の未定義の範囲にはそれ自身のメモリは割り当てられないでしょう。 それにもかかわらず、JavaScriptは、言語が配列を提示したい array.length n として n のメンバーで、それらは 0 から n - 1 であり、この範囲にあるものはすべて配列の一部となります。

しかし、おそらくあなたが欲しいのは、配列の中のある値が 実際に定義されたもの - つまり、それは undefined . もしかしたら、それが定義されているかどうかさえ知りたいかもしれませんし ない null . 値を設定せずに配列のメンバーを追加することは可能です。 array.length プロパティを使用すると、新しい値はすべて undefined .

与えられた値が何か意味のあるものであるか、定義されているかどうかを判断すること。 ということです。 ない undefined または null :

if (typeof array[index] !== 'undefined') {

または

if (typeof array[index] !== 'undefined' && array[index] !== null) {

興味深いことに、JavaScriptの比較ルールのおかげで、最後の例は次のように最適化することができる。

if (array[index] != null) {
  // The == and != operators consider null equal to only null or undefined
}