react / wstein / node_modules / jest-cli / node_modules / istanbul / node_modules / js-yaml / node_modules / argparse / node_modules / lodash / array / lastIndexOf.js
80742 viewsvar binaryIndex = require('../internal/binaryIndex'),1indexOfNaN = require('../internal/indexOfNaN');23/* Native method references for those with the same name as other `lodash` methods. */4var nativeMax = Math.max,5nativeMin = Math.min;67/**8* This method is like `_.indexOf` except that it iterates over elements of9* `array` from right to left.10*11* @static12* @memberOf _13* @category Array14* @param {Array} array The array to search.15* @param {*} value The value to search for.16* @param {boolean|number} [fromIndex=array.length-1] The index to search from17* or `true` to perform a binary search on a sorted array.18* @returns {number} Returns the index of the matched value, else `-1`.19* @example20*21* _.lastIndexOf([1, 2, 1, 2], 2);22* // => 323*24* // using `fromIndex`25* _.lastIndexOf([1, 2, 1, 2], 2, 2);26* // => 127*28* // performing a binary search29* _.lastIndexOf([1, 1, 2, 2], 2, true);30* // => 331*/32function lastIndexOf(array, value, fromIndex) {33var length = array ? array.length : 0;34if (!length) {35return -1;36}37var index = length;38if (typeof fromIndex == 'number') {39index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1;40} else if (fromIndex) {41index = binaryIndex(array, value, true) - 1;42var other = array[index];43if (value === value ? (value === other) : (other !== other)) {44return index;45}46return -1;47}48if (value !== value) {49return indexOfNaN(array, index, true);50}51while (index--) {52if (array[index] === value) {53return index;54}55}56return -1;57}5859module.exports = lastIndexOf;606162