_.mixin({ 'orderKeysBy': function (obj, comparator, order) { if (_.isString(comparator) && _.isNull(order)) { order = comparator; comparator = null; } var keys = _.orderBy(_.keys(obj), function (key) { return comparator ? comparator(obj[key], key) : key; }, order); var values = _.map(keys, function (key) { return obj[key]; }); return _.zipObject(keys, values); } });