32 lines
		
	
	
		
			895 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			32 lines
		
	
	
		
			895 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var baseMatches = require('./_baseMatches'), | ||
|  |     baseMatchesProperty = require('./_baseMatchesProperty'), | ||
|  |     identity = require('./identity'), | ||
|  |     isArray = require('./isArray'), | ||
|  |     property = require('./property'); | ||
|  | 
 | ||
|  | /** | ||
|  |  * The base implementation of `_.iteratee`. | ||
|  |  * | ||
|  |  * @private | ||
|  |  * @param {*} [value=_.identity] The value to convert to an iteratee. | ||
|  |  * @returns {Function} Returns the iteratee. | ||
|  |  */ | ||
|  | function baseIteratee(value) { | ||
|  |   // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
 | ||
|  |   // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
 | ||
|  |   if (typeof value == 'function') { | ||
|  |     return value; | ||
|  |   } | ||
|  |   if (value == null) { | ||
|  |     return identity; | ||
|  |   } | ||
|  |   if (typeof value == 'object') { | ||
|  |     return isArray(value) | ||
|  |       ? baseMatchesProperty(value[0], value[1]) | ||
|  |       : baseMatches(value); | ||
|  |   } | ||
|  |   return property(value); | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = baseIteratee; |