00001 var baseFindIndex = require('./_baseFindIndex'),
00002 baseIsNaN = require('./_baseIsNaN'),
00003 strictLastIndexOf = require('./_strictLastIndexOf'),
00004 toInteger = require('./toInteger');
00005
00006
00007 var nativeMax = Math.max,
00008 nativeMin = Math.min;
00009
00031 function lastIndexOf(array, value, fromIndex) {
00032 var length = array == null ? 0 : array.length;
00033 if (!length) {
00034 return -1;
00035 }
00036 var index = length;
00037 if (fromIndex !== undefined) {
00038 index = toInteger(fromIndex);
00039 index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
00040 }
00041 return value === value
00042 ? strictLastIndexOf(array, value, index)
00043 : baseFindIndex(array, baseIsNaN, index, true);
00044 }
00045
00046 module.exports = lastIndexOf;