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.
		
		
		
		
		
			
		
			
				
					
					
						
							49 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							1.5 KiB
						
					
					
				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;
 | 
						|
 |