Initial commit
[yaffs-website] / node_modules / grunt-contrib-watch / node_modules / lodash / internal / baseSortByOrder.js
1 var arrayMap = require('./arrayMap'),
2     baseCallback = require('./baseCallback'),
3     baseMap = require('./baseMap'),
4     baseSortBy = require('./baseSortBy'),
5     compareMultiple = require('./compareMultiple');
6
7 /**
8  * The base implementation of `_.sortByOrder` without param guards.
9  *
10  * @private
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.
15  */
16 function baseSortByOrder(collection, iteratees, orders) {
17   var index = -1;
18
19   iteratees = arrayMap(iteratees, function(iteratee) { return baseCallback(iteratee); });
20
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 };
24   });
25
26   return baseSortBy(result, function(object, other) {
27     return compareMultiple(object, other, orders);
28   });
29 }
30
31 module.exports = baseSortByOrder;