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.
		
		
		
		
		
			
		
			
				
					33 lines
				
				897 B
			
		
		
			
		
	
	
					33 lines
				
				897 B
			| 
								 
											3 years ago
										 
									 | 
							
								var isSymbol = require('./isSymbol');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The base implementation of methods like `_.max` and `_.min` which accepts a
							 | 
						||
| 
								 | 
							
								 * `comparator` to determine the extremum value.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @private
							 | 
						||
| 
								 | 
							
								 * @param {Array} array The array to iterate over.
							 | 
						||
| 
								 | 
							
								 * @param {Function} iteratee The iteratee invoked per iteration.
							 | 
						||
| 
								 | 
							
								 * @param {Function} comparator The comparator used to compare values.
							 | 
						||
| 
								 | 
							
								 * @returns {*} Returns the extremum value.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function baseExtremum(array, iteratee, comparator) {
							 | 
						||
| 
								 | 
							
								  var index = -1,
							 | 
						||
| 
								 | 
							
								      length = array.length;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  while (++index < length) {
							 | 
						||
| 
								 | 
							
								    var value = array[index],
							 | 
						||
| 
								 | 
							
								        current = iteratee(value);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (current != null && (computed === undefined
							 | 
						||
| 
								 | 
							
								          ? (current === current && !isSymbol(current))
							 | 
						||
| 
								 | 
							
								          : comparator(current, computed)
							 | 
						||
| 
								 | 
							
								        )) {
							 | 
						||
| 
								 | 
							
								      var computed = current,
							 | 
						||
| 
								 | 
							
								          result = value;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return result;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = baseExtremum;
							 |