You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							26 lines
						
					
					
						
							853 B
						
					
					
				
			
		
		
	
	
							26 lines
						
					
					
						
							853 B
						
					
					
				var baseIteratee = require('./_baseIteratee'),
 | 
						|
    isArrayLike = require('./isArrayLike'),
 | 
						|
    keys = require('./keys');
 | 
						|
 | 
						|
/**
 | 
						|
 * 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)) {
 | 
						|
      var iteratee = baseIteratee(predicate, 3);
 | 
						|
      collection = keys(collection);
 | 
						|
      predicate = function(key) { return iteratee(iterable[key], key, iterable); };
 | 
						|
    }
 | 
						|
    var index = findIndexFunc(collection, predicate, fromIndex);
 | 
						|
    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
module.exports = createFind;
 |