createFind.js 843 B

12345678910111213141516171819202122232425
  1. var baseCallback = require('./baseCallback'),
  2. baseFind = require('./baseFind'),
  3. baseFindIndex = require('./baseFindIndex'),
  4. isArray = require('../lang/isArray');
  5. /**
  6. * Creates a `_.find` or `_.findLast` function.
  7. *
  8. * @private
  9. * @param {Function} eachFunc The function to iterate over a collection.
  10. * @param {boolean} [fromRight] Specify iterating from right to left.
  11. * @returns {Function} Returns the new find function.
  12. */
  13. function createFind(eachFunc, fromRight) {
  14. return function(collection, predicate, thisArg) {
  15. predicate = baseCallback(predicate, thisArg, 3);
  16. if (isArray(collection)) {
  17. var index = baseFindIndex(collection, predicate, fromRight);
  18. return index > -1 ? collection[index] : undefined;
  19. }
  20. return baseFind(collection, predicate, eachFunc);
  21. };
  22. }
  23. module.exports = createFind;