« onkeydown等のイベントで重ための関数を実行するときのテクニック | メイン | aタグのリンク先から特定の拡張子を探すbookmarklet »

JavaScriptで配列に値が入っているかどうかを判定する

JavaScriptの配列に、文字列や数値だけが入っているとき、そこにある値が入っているかを判定するには、

var hoge = [123,456,789];
var check = 123;
for(p in hoge){
    if(hoge[p] ==check){
        alert('入ってる!');
        break;
    }
}

と、書くけど、もっと簡単に、

var hoge = [123,456,789];
var check = 123;
if((' '+hoge.join(' ')+' ').indexOf(' '+check+' ') > 0) alert('入っている');

と書ける。

jQueryの中でHTMLエレメントに指定されているclass名の判定には同じようなロジックが実装されています。

コメント (2)

DKO:

失礼!通りすがりのものです。
>if((' '+hoge.join(' ')+' ').indexOf(' '+check+' ') > 0) alert('入っている');
ですが、
if((' '+hoge.join(' ')+' ').indexOf(' '+check+' ') >= 0) alert('入っている');
では?と思った次第です。
間違ってたらお許しを(^^;

DKO:

度々失礼・・・
上記のコメントをさせていただきましたが、
正しくは、こうではないでしょうか。

if((' '+hoge.join(' ')+' ').indexOf(' '+check+' ', 0) >= 0) alert('入っている!'+check);