sortedGroupBy = (list, groupByIter, sortByIter) -> # Pass in an array to group by multiple object keys if _.isArray(groupByIter) groupBy = (obj) -> _.map groupByIter, (key, value) -> obj[key] else groupBy = groupByIter # Pass in an array to sort by multiple object keys if _.isArray(sortByIter) sortBy = (obj) -> _.map sortByIter, (key, value) -> obj[key] else sortBy = sortByIter groups = _.groupBy(list, groupBy) _.each groups, (value, key, list) -> list[key] = _.sortBy(value, sortBy) return groups