2014年9月16日火曜日

配列の中に値があるかを調べる

たとえば、

var array = ["apple", "banana", "orange"];

という配列があった場合、配列の中にappleという文字があるかを調べるとする。上記のようにfor文で

for ( i = 0; i < array.length; i++ ) {
    if ( array[i] == "apple" ) {
        //何かの処理を行う
    }
}

配列の中身を繰り返し調べるという手段がありますが、forを使わなくて、配列の中身の値があるかを調べる関数があります。

array.indexOf("apple")のようにindexOf関数の()の中に調べたい値を入れ、配列内に指定した文字列があれば、配列内の順番を返す。

たとえば、appleだった場合は、0番目の値なので、array.indexOf("apple");だと0になります。bananaの場合は1でorangeの場合は2になります。indexOfの()で指定した文字列が無かった場合、たとえばsoyと指定した場合は-1という値が返ってきます。array.indexOf("文字や数字")は、0以上の場合は指定した値があることになり、0よりも小さい数字の場合は指定した値がないことになります。

たとえば、var answer = [1, "Y"];という質問番号とその回答(YesならY、NoならNのようにする)の配列を作ったとして、Yと答えたものだけ処理を続けたいという場合は、下記のようになります。

var answers = [ [1, "Y"], [2, "Y"], [3, "N"] ];

for ( i = 0; i < answers.length; i++ ) {

    //indexOfは値があれば0以上の数字になるので、0以上の場合はYとみなす
    if( array[i].indexOf("Y") >= 0 ) {
        //Yesと答えた質問のみ処理を続ける
    }
}

0 件のコメント:

コメントを投稿