mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-01-31 15:27:50 +00:00
39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
import baseFindIndex from './.internal/baseFindIndex.js'
|
|
import baseIsNaN from './.internal/baseIsNaN.js'
|
|
import strictLastIndexOf from './.internal/strictLastIndexOf.js'
|
|
|
|
/**
|
|
* This method is like `indexOf` except that it iterates over elements of
|
|
* `array` from right to left.
|
|
*
|
|
* @since 0.1.0
|
|
* @category Array
|
|
* @param {Array} array The array to inspect.
|
|
* @param {*} value The value to search for.
|
|
* @param {number} [fromIndex=array.length-1] The index to search from.
|
|
* @returns {number} Returns the index of the matched value, else `-1`.
|
|
* @example
|
|
*
|
|
* lastIndexOf([1, 2, 1, 2], 2)
|
|
* // => 3
|
|
*
|
|
* // Search from the `fromIndex`.
|
|
* lastIndexOf([1, 2, 1, 2], 2, 2)
|
|
* // => 1
|
|
*/
|
|
function lastIndexOf(array, value, fromIndex) {
|
|
const length = array == null ? 0 : array.length
|
|
if (!length) {
|
|
return -1
|
|
}
|
|
let index = length
|
|
if (fromIndex !== undefined) {
|
|
index = index < 0 ? Math.max(length + index, 0) : Math.min(index, length - 1)
|
|
}
|
|
return value === value
|
|
? strictLastIndexOf(array, value, index)
|
|
: baseFindIndex(array, baseIsNaN, index, true)
|
|
}
|
|
|
|
export default lastIndexOf
|