【JavaScript】if文で配列に要素があるかないかを調べるときの注意点|lengthを使う。array[0] == nullはNG(nullも要素とみなされる)

javascript-prograshi(プロぐらし)-kv JavaScript
記事内に広告が含まれていることがあります。

配列の中に要素があれば、Aの処理をし、要素が空であればBの処理をするといった条件分岐をしたい場合、要素の値があるかどうかは「.length」を使う必要があります。

配列の一つ目が空のはずだから、array[0] == nullとしていはいけません。

ここではその理由を実例を踏まえて解説しています。


array[0]==null としてはいけない理由

理由

if ( array[0] == null )

上記の条件分岐は、配列の1つ目に何も要素がない、すなわちnullなら、trueにするという処理で一見上手くいくように見えます。

しかし、この記述は使えません。なぜなら、配列の中に「null」が存在することがあるため(存在できるため)です。

point

「null」は一つの要素。空という意味ではない。


実例

例えば、配列が[null,1,2,3]だとすると、「arr[0] == null」で配列の要素が空かどうかを判定する場合は、空ではないのに、空判定されてしまいます。

arr = [null,1,2,3]

if(arr[0] == null){
    console.log('配列は空です')
}else{
    console.log('要素があります')
}


//出力
配列は空です


注意:ひっかけ

配列が本当に空のときは「arr[0] == null」で空判定さるので、注意が必要です。

arr = []

if(arr[0] == null){
    console.log('配列は空です')
}else{
    console.log('要素があります')
}


//出力
配列は空です


対処法|lengthを使う

対処法

配列の中に要素として「null」と他の要素が混在する場合に、要素が空と判定されないためには必ずlengthを使って条件式を記述する必要があります。

if ( array.length )


注意点|nullも一つの要素とみなす

例えば、配列「array」の値が[ null ]だとすると、array.lengthは1になります。

arr = [ null ]
ans = arr.length

console.log(ans)

//出力
1


実例

例えば、条件式を「arr.lentgh」とすれば、配列が[null,1,2,3]のようにnullを含んでいたとしても、空とはみなされなくなります。

arr = [null,1,2,3]

if(arr.lentgh){
    console.log('配列は空です')
}else{
    console.log('要素があります')
}


//出力
要素があります


タイトルとURLをコピーしました