特定の配列インデックスに値が存在するかどうかを JavaScript で確認するにはどうすればよいですか? 質問する

特定の配列インデックスに値が存在するかどうかを JavaScript で確認するにはどうすればよいですか? 質問する

これは、位置の値がindex存在するかどうかをテストするために機能しますか、それともより良い方法がありますか:

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

ベストアンサー1

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

概念上、配列は線形であり、ゼロから始まり最大値まで進み、その範囲内にエントリが存在しない「ギャップ」を持つメカニズムはありません。特定の位置インデックス(インデックスは0または正の整数)に値が存在するかどうかを確認するには、文字通り次のようにします。

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

さて、内部的には、JavaScript エンジンは、動的言語ではあまり意味がなく、特定のコードでは非効率になるため、配列スペースをこのように線形かつ連続的に割り当てることはほぼ確実にありません。それらはおそらくハッシュ テーブルか、何らかの戦略のハイブリッド混合であり、配列の未定義の範囲には独自のメモリが割り当てられない可能性があります。それでも、JavaScript 言語は、array.length nの配列をn 個のメンバーを持つものとして表現し、0からn - 1までの名前が付けられ、この範囲内のすべてが配列の一部になります。

しかし、おそらく知りたいのは、配列内の値が実際に定義されているかどうか、つまり ではないかどうかです。 定義されているかどうか、 ではないかどうかundefinedを知りたい場合もあります。 値を設定せずに配列にメンバーを追加することも可能です。たとえば、 プロパティを増やして配列値を追加すると、新しい値はすべて になります。nullarray.lengthundefined

与えられた値が意味のあるものか、または定義されているかを判断します。つまり、 、、または ではありませんundefinednull

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
}  

おすすめ記事