35 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var arrayMap = require('./_arrayMap'), | ||
|  |     baseIteratee = require('./_baseIteratee'), | ||
|  |     baseMap = require('./_baseMap'), | ||
|  |     baseSortBy = require('./_baseSortBy'), | ||
|  |     baseUnary = require('./_baseUnary'), | ||
|  |     compareMultiple = require('./_compareMultiple'), | ||
|  |     identity = require('./identity'); | ||
|  | 
 | ||
|  | /** | ||
|  |  * 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) { | ||
|  |   var index = -1; | ||
|  |   iteratees = arrayMap(iteratees.length ? iteratees : [identity], 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; |