lastIndexOf() | 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 = _.lastIndexOf( arr, num );

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

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

■内部構造

  _.lastIndexOf = function(array, item, from) {

// array が true なら idx = array.length;
    var idx = array ? array.length : 0;

// 第3引数が数字なら
    if (typeof from == "number") {
    	
// fromが0未満なら idx = idx + from + 1;
// fromが1以上なら idxと(from + 1)の数が少ない方が idx に代入される。
      idx = from < 0 ? idx + from + 1 : Math.min(idx, from + 1);
    }

// if (item !== item)  は item = NaN の時 if 文が実行される。
    if (item !== item) {
      return _.findLastIndex(slice.call(array, 0, idx), _.isNaN);
    }
    
// 第1引数の後ろから値を調べられ、第2引数の値と同じものがあった場合、そのIndex値が返される。
// 同じ値がなければ「-1」が返される
    while (--idx >= 0) if (array[idx] === item) return idx;
    return -1;
  };

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