Javascriptの配列で、ある要素がその配列に存在しているかを知りたい。
さらに存在するのであれば何番目に存在するのか?

といった時はindexOfメソッドが使えるが、ついつい間違ったコードを書いてしまいがちなのでここにメモしておく。
間違ったコードというのは

var list = ["Hello", "Good morning", "Good night"];

if (list.indexOf("Hello")) {
    alert("Hello");
}

と、こんな感じのコードを書いてアラートが表示されるのを期待しても何も起きない。
さらにlistに含まれていない要素を引数に指定すると今度はアラートが表示されてしまう。

これはindexOfメソッドが返すオブジェクトがindex番号なので配列の最初の要素は0という事で条件判断したときにfalseになってしまうからだ。
要素が見つからなければ-1を返すが今度はこれがtrueと判定されてしまう。

なので正しくは

if (list.indexOf("Hello") != -1)

と書かなければいけない。

カテゴリ:

トラックバック(0)

トラックバックURL: http://blog.beanz-net.jp/beanz_mtos/mt-tb.cgi/10

コメントする