1 var arrayMap = require('./arrayMap'),
2 baseCallback = require('./baseCallback'),
3 baseMap = require('./baseMap'),
4 baseSortBy = require('./baseSortBy'),
5 compareMultiple = require('./compareMultiple');
8 * The base implementation of `_.sortByOrder` without param guards.
11 * @param {Array|Object|string} collection The collection to iterate over.
12 * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
13 * @param {boolean[]} orders The sort orders of `iteratees`.
14 * @returns {Array} Returns the new sorted array.
16 function baseSortByOrder(collection, iteratees, orders) {
19 iteratees = arrayMap(iteratees, function(iteratee) { return baseCallback(iteratee); });
21 var result = baseMap(collection, function(value) {
22 var criteria = arrayMap(iteratees, function(iteratee) { return iteratee(value); });
23 return { 'criteria': criteria, 'index': ++index, 'value': value };
26 return baseSortBy(result, function(object, other) {
27 return compareMultiple(object, other, orders);
31 module.exports = baseSortByOrder;