Javascriptで配列の要素の存在チェックはindexOfで可能。注意点があるよ

if文でのチェック方法

サッと書いてしまうと↓のような感じです。

var arrayMonth = [ '1月', '2月', '3月', '4月' ];

if(arrayMonth.indexOf('1月') >= 0){
    // 存在する
}else{
    // 存在しない
}

注意点

indexOfは型も見ます!

僕自身、if文が意図通りに動作しなくてなんでだろーって少し苦戦したことがあります。

↓は悪い例です。if文のtrueに入ってくれません。

/**
* これは悪い例です
*/ 
var arrayMonth = [ '1', '2', '3', '4' ];

if(arrayMonth.indexOf(1) >= 0){
    // 存在する
}else{
    // 存在しない
}

正解:型変換を使ってindexOfを使おう

/**
* 型を指定して判定しよう
*/ 
var arrayMonth = [ '1', '2', '3', '4' ];

// 文字列にする
if(arrayMonth.indexOf(String(1)) >= 0){
    // 存在する
}else{
    // 存在しない
}

// もしくは

var arrayMonthNum = [ 1, 2, 3, 4 ];

// 数値にするにはNumberやparseInt等
if(arrayMonthNum.indexOf(Number('1')) >= 0){
    // 存在する
}else{
    // 存在しない
}

以上です。良いJavascriptライフを!

コメント

タイトルとURLをコピーしました