- Published on
Angular orderBy in object
- Authors
- Name
- Peter Peerdeman
- @peterpeerdeman
So apparently, orderBy only works on arrays. If you want to sort an object, you can use the following filter which transforms the object into an array and sorts it.
app.filter('orderObjectBy', function () {
return function (input, attribute, reverse) {
if (!angular.isObject(input)) return input;
var array = [];
for (var i = 0; i < input.length; i++) {
array.push(input[i]);
}
array.sort(function (a, b) {
a = parseInt(a[attribute]);
b = parseInt(b[attribute]);
if (reverse) {
return b - a;
} else {
return a - b;
}
});
return array;
};
});