Permalink
Cannot retrieve contributors at this time
import findLastIndex from './findLastIndex.js' | |
import isArrayLike from './isArrayLike.js' | |
/** | |
* This method is like `find` except that it iterates over elements of | |
* `collection` from right to left. | |
* | |
* @since 2.0.0 | |
* @category Collection | |
* @param {Array|Object} collection The collection to inspect. | |
* @param {Function} predicate The function invoked per iteration. | |
* @param {number} [fromIndex=collection.length-1] The index to search from. | |
* @returns {*} Returns the matched element, else `undefined`. | |
* @see find, findIndex, findKey, findLastIndex, findLastKey | |
* @example | |
* | |
* findLast([1, 2, 3, 4], n => n % 2 == 1) | |
* // => 3 | |
*/ | |
function findLast(collection, predicate, fromIndex) { | |
let iteratee | |
const iterable = Object(collection) | |
if (!isArrayLike(collection)) { | |
collection = Object.keys(collection) | |
iteratee = predicate | |
predicate = (key) => iteratee(iterable[key], key, iterable) | |
} | |
const index = findLastIndex(collection, predicate, fromIndex) | |
return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined | |
} | |
export default findLast |