function sortedGroupBy(list, groupByIter, sortByIter) { if (_.isArray(groupByIter)) { function groupBy(obj) { return _.map(groupByIter, function(key, value) { return obj[key]; }); } } else { var groupBy = groupByIter; } if (_.isArray(sortByIter)) { function sortBy(obj) { return _.map(sortByIter, function(key, value) { return obj[key]; }); } } else { var sortBy = sortByIter; } var groups = _.groupBy(list, groupBy); _.each(groups, function(value, key, list) { list[key] = _.sortBy(value, sortBy); }); return groups; }