配列の中に要素があれば、Aの処理をし、要素が空であればBの処理をするといった条件分岐をしたい場合、要素の値があるかどうかは「.length」を使う必要があります。
配列の一つ目が空のはずだから、array[0] == null
としていはいけません。
ここではその理由を実例を踏まえて解説しています。
array[0]==null としてはいけない理由
理由
if ( array[0] == null )
上記の条件分岐は、配列の1つ目に何も要素がない、すなわちnullなら、trueにするという処理で一見上手くいくように見えます。
しかし、この記述は使えません。なぜなら、配列の中に「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('要素があります')
}
//出力
要素があります