indexOf() | Underscore JS 日本語リファレンス

第1引数「配列」に第2引数の値が含まれる時、配列のindex値を返す。

■使用例

var arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
var arr2 = [10, 20, 30, NaN, 40, 50];
var num = 5;
var num2 = NaN;
var num3 = 13;

// re = 4
var re = _.indexOf( arr, num );

// re2 = 3
var re2 = _.indexOf( arr2, num2, 3 );

// re3 = -1
var re3 = _.indexOf( arr, num3 );

■内部構造

  _.indexOf = function(array, item, isSorted) {
    var i = 0, length = array && array.length;
    
// 第3引数がの型が数字だったら、
    if (typeof isSorted == "number") {

// 第3引数が0以上の場合はそのまま i に代入される。
      i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted;
      
// 第3引数の型が数字以外で true の場合
    } else if (isSorted && length) {

// 第1引数の配列の中で第2引数を入れる位置のindex値を i に代入。
      i = _.sortedIndex(array, item);
      return array[i] === item ? i : -1;
    }
    
// if (item !== item)  は item = NaN の時 if 文が実行される。
    if (item !== item) {

// sliceされた配列の中に NaN が含まれていたら index値を返す。
      return _.findIndex(slice.call(array, i), _.isNaN);
    }
    
// 第1引数の配列の中に第2引数があったら、配列のindex値を返す。
    for (; i < length; i++) if (array[i] === item) return i;
    return -1;
  };

このページのトップへ戻る