javascriptで変数aが配列かどうか確かめる場合、多くの情報には
Array.isArray(a)
を使うということが書かれている。
この間それでハマった。
たとえばカートみたいな、いくつか商品が並んでいるようなものを想像してほしい。
同じinputの項目で、goodsnameみたいなものがあって、ミカンを買う。みかん一個であればelement goodsnameの値はミカン一つだ。
しかし、ミカンとリンゴを買うとしたら、goodsnameは2つ存在することになる。当然配列になる・・・?
実際に二つ商品を買う場合に、配列と仮定して、たとえば
var goodsname=document.myform.goodsname;
for(var i=0; i<goodsname.length; i++){
// goodsname[i]として、それぞれの商品に何らかの処理をする
}
みたいなことはできるのです。しかし、これではミカンしか買わない場合には使えない。
そこで
var goodsname=document.myform.goodsname;
if(Array.isArray(goodsname)){
for(var i=0;i<goodsname.length;i++){
//goodsname[i]を処理
}
}
else {
// 一個しかないのでgoodsnameを処理
}
こんな風に書きたいですよね。
ところが、isArray(goodsname)としても、これは配列ではないとしてfalseを返してしまう。
htmlのelementsの場合には、isArrayでは判定できないんです。
どうしたらいい?
自分は最終的に
if(goodsname.lendth==undefined){
}
みたいな判定分にしました。これが正しいやり方なのかどうかはわかりません。動いてはいるのでいいのではないか。