time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

lastIndexOf.js (1358B)


      1 var baseFindIndex = require('./_baseFindIndex'),
      2     baseIsNaN = require('./_baseIsNaN'),
      3     strictLastIndexOf = require('./_strictLastIndexOf'),
      4     toInteger = require('./toInteger');
      5 
      6 /* Built-in method references for those with the same name as other `lodash` methods. */
      7 var nativeMax = Math.max,
      8     nativeMin = Math.min;
      9 
     10 /**
     11  * This method is like `_.indexOf` except that it iterates over elements of
     12  * `array` from right to left.
     13  *
     14  * @static
     15  * @memberOf _
     16  * @since 0.1.0
     17  * @category Array
     18  * @param {Array} array The array to inspect.
     19  * @param {*} value The value to search for.
     20  * @param {number} [fromIndex=array.length-1] The index to search from.
     21  * @returns {number} Returns the index of the matched value, else `-1`.
     22  * @example
     23  *
     24  * _.lastIndexOf([1, 2, 1, 2], 2);
     25  * // => 3
     26  *
     27  * // Search from the `fromIndex`.
     28  * _.lastIndexOf([1, 2, 1, 2], 2, 2);
     29  * // => 1
     30  */
     31 function lastIndexOf(array, value, fromIndex) {
     32   var length = array == null ? 0 : array.length;
     33   if (!length) {
     34     return -1;
     35   }
     36   var index = length;
     37   if (fromIndex !== undefined) {
     38     index = toInteger(fromIndex);
     39     index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
     40   }
     41   return value === value
     42     ? strictLastIndexOf(array, value, index)
     43     : baseFindIndex(array, baseIsNaN, index, true);
     44 }
     45 
     46 module.exports = lastIndexOf;