00001 var arrayMap = require('./_arrayMap'), 00002 baseIteratee = require('./_baseIteratee'), 00003 baseMap = require('./_baseMap'), 00004 baseSortBy = require('./_baseSortBy'), 00005 baseUnary = require('./_baseUnary'), 00006 compareMultiple = require('./_compareMultiple'), 00007 identity = require('./identity'); 00008 00018 function baseOrderBy(collection, iteratees, orders) { 00019 var index = -1; 00020 iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee)); 00021 00022 var result = baseMap(collection, function(value, key, collection) { 00023 var criteria = arrayMap(iteratees, function(iteratee) { 00024 return iteratee(value); 00025 }); 00026 return { 'criteria': criteria, 'index': ++index, 'value': value }; 00027 }); 00028 00029 return baseSortBy(result, function(object, other) { 00030 return compareMultiple(object, other, orders); 00031 }); 00032 } 00033 00034 module.exports = baseOrderBy;