time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

_createFind.js (853B)


      1 var baseIteratee = require('./_baseIteratee'),
      2     isArrayLike = require('./isArrayLike'),
      3     keys = require('./keys');
      4 
      5 /**
      6  * Creates a `_.find` or `_.findLast` function.
      7  *
      8  * @private
      9  * @param {Function} findIndexFunc The function to find the collection index.
     10  * @returns {Function} Returns the new find function.
     11  */
     12 function createFind(findIndexFunc) {
     13   return function(collection, predicate, fromIndex) {
     14     var iterable = Object(collection);
     15     if (!isArrayLike(collection)) {
     16       var iteratee = baseIteratee(predicate, 3);
     17       collection = keys(collection);
     18       predicate = function(key) { return iteratee(iterable[key], key, iterable); };
     19     }
     20     var index = findIndexFunc(collection, predicate, fromIndex);
     21     return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
     22   };
     23 }
     24 
     25 module.exports = createFind;