mirror of
				https://github.com/taixingyiji/openit.git
				synced 2025-11-04 00:12:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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;
 |