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.
		
		
		
		
		
			
		
			
				
					50 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					50 lines
				
				1.5 KiB
			| 
											3 years ago
										 | var arrayMap = require('./_arrayMap'), | ||
|  |     baseGet = require('./_baseGet'), | ||
|  |     baseIteratee = require('./_baseIteratee'), | ||
|  |     baseMap = require('./_baseMap'), | ||
|  |     baseSortBy = require('./_baseSortBy'), | ||
|  |     baseUnary = require('./_baseUnary'), | ||
|  |     compareMultiple = require('./_compareMultiple'), | ||
|  |     identity = require('./identity'), | ||
|  |     isArray = require('./isArray'); | ||
|  | 
 | ||
|  | /** | ||
|  |  * The base implementation of `_.orderBy` without param guards. | ||
|  |  * | ||
|  |  * @private | ||
|  |  * @param {Array|Object} collection The collection to iterate over. | ||
|  |  * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. | ||
|  |  * @param {string[]} orders The sort orders of `iteratees`. | ||
|  |  * @returns {Array} Returns the new sorted array. | ||
|  |  */ | ||
|  | function baseOrderBy(collection, iteratees, orders) { | ||
|  |   if (iteratees.length) { | ||
|  |     iteratees = arrayMap(iteratees, function(iteratee) { | ||
|  |       if (isArray(iteratee)) { | ||
|  |         return function(value) { | ||
|  |           return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); | ||
|  |         } | ||
|  |       } | ||
|  |       return iteratee; | ||
|  |     }); | ||
|  |   } else { | ||
|  |     iteratees = [identity]; | ||
|  |   } | ||
|  | 
 | ||
|  |   var index = -1; | ||
|  |   iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); | ||
|  | 
 | ||
|  |   var result = baseMap(collection, function(value, key, collection) { | ||
|  |     var criteria = arrayMap(iteratees, function(iteratee) { | ||
|  |       return iteratee(value); | ||
|  |     }); | ||
|  |     return { 'criteria': criteria, 'index': ++index, 'value': value }; | ||
|  |   }); | ||
|  | 
 | ||
|  |   return baseSortBy(result, function(object, other) { | ||
|  |     return compareMultiple(object, other, orders); | ||
|  |   }); | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = baseOrderBy; |