第1引数「配列」の最後の値から降順で調べられ、第2引数の関数の条件を満たしている後ろから最初のindex値が返される。
■使用例
var arr = [ 7, 1, 6, 7, 4 ];
var func = function(num){
return num % 2 == 0;
}
// re = 4
var re = _.findLastIndex( arr, func );
■内部構造
_.findLastIndex = createIndexFinder(-1);
function createIndexFinder(dir) {
// _.findLastIndex() の引数が適用される関数。
return function(array, predicate, context) {
// 第3引数が入力されていない、第2引数が関数ならそのまま。
predicate = cb(predicate, context);
// 第1引数の長さ抽出。
var length = array != null && array.length;
// index = length - 1;
var index = dir > 0 ? 0 : length - 1;
// 第2引数の関数の条件を満たしていた配列のindex値が返される。
for (; index >= 0 && index < length; index += dir) {
if (predicate(array[index], index, array)) return index;
}
// 各値が条件を満たしていなかった場合、「-1」が返される。
return -1;
};
}