// AngularJS Filter for ordering objects with // ngRepeat by multiple properties. app.filter('orderObjectBy', function () { return function (items, fields) { var filtered = []; angular.forEach(items, function (item) { filtered.push(item); }); filtered.sort(function (a, b) { for (var i = 0; i < fields.length; i++) { var field = fields[i], reverse = field.startsWith('-'); if (reverse) field = field.slice(1); if (a[field] === b[field]) continue; if (!reverse) return (a[field] > b[field] ? 1 : -1); return (a[field] < b[field] ? 1 : -1); } return 0; }); return filtered; }; });