SIGN IN SIGN UP

A modern JavaScript utility library delivering modularity, performance, & extras.

0 0 22 JavaScript
2016-05-23 12:25:07 -07:00
define(['./_baseIteratee', './isArrayLike', './keys'], function(baseIteratee, isArrayLike, keys) {
/** Used as a safe reference for `undefined` in pre-ES5 environments. */
var undefined;
/**
* Creates a `_.find` or `_.findLast` function.
*
* @private
* @param {Function} findIndexFunc The function to find the collection index.
* @returns {Function} Returns the new find function.
*/
function createFind(findIndexFunc) {
return function(collection, predicate, fromIndex) {
var iterable = Object(collection);
if (!isArrayLike(collection)) {
2016-07-24 09:52:04 -07:00
var iteratee = baseIteratee(predicate, 3);
collection = keys(collection);
predicate = function(key) { return iteratee(iterable[key], key, iterable); };
2016-05-23 12:25:07 -07:00
}
2016-07-24 09:52:04 -07:00
var index = findIndexFunc(collection, predicate, fromIndex);
return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
2016-05-23 12:25:07 -07:00
};
}
return createFind;
});