第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;
};