2013年10月4日金曜日

JavaScriptでtypeofをした際にオブジェクトなのか配列なのか判別する方法

  • このエントリーをはてなブックマークに追加

JavaScriptで関数を作る際に、もちろん自分だけが触るようなものだったら問題ないけど、
他の人が触るようなものだったり、公開するようなものだと丁寧に作らないとってとこだったりする。
特に引数が数字なのか、文字列なのか、配列なのかなどのチェックをする必要がある。

ちなみにJavaScriptではtypeofというものを使ってあげれば、変数がどの型かわかる。
これを使って引数が文字列なのか、配列なのかを区別してあげればいいんだけど、
typeofを使った場合オブジェクトと配列の結果はobjectと出てしまって判断がつかない。
ということで今回はtypeofをした際にオブジェクトなのか配列なのかを判断するコードを書いてみる。

var hoge = [1,2,3];
if(typeof hoge == "object" && hoge.length != undefined){
  console.log("hoge is Array");
}
else{
  console.log("hoge is Object");
}
typeofをしてあげた際に、objectとなるのはオブジェクトか配列なので、
これらの違いを後は条件に加えてあげればいいだけ。
JavaScriptで配列は.lengthというプロパティを絶対に持っているので、
これを持っているならば配列、持っていないならばオブジェクトと判断出来る。

実際にこのチェックをちゃんとやらないと、関数を使い回していると後々痛い目に遭う事もあるわけで。
関数化してあげるなりなんなりしてみればよいのではないかと思う。

Adsense