JavaScript objects are unordered by definition (see the ECMAScript Language Specification, section 4.3.3). The language specification doesn't even guarantee that, if you iterate over the properties of an object twice in succession, they'll come out in the same order the second time.
If you need things to be ordered, use an array and the Array.prototype.sort method:
var filters = [
{ name: "language", order: 2, someProperty : "prop1", someOther : "prop2" },
{ name: "country", order: 1, resumeProp : "prop", resumeProp2 : false },
{ name: "destination", order: 0, resumeProp : "prop", resumeProp2 : false }
];
function compare(a,b) {
if (a.order < b.order)
return -1;
else if (a.order > b.order)
return 1;
else
return 0;
}
filters.sort(compare); // destination, country, language
If you are coding in ES6 you can use the Map object which is similar to an Object and guarantees key order.
If the original object cannot be modified then
create another array with the object's indexes like var filtersKey = ['destination', 'country', 'language'];
run the ng-repeat on that array.
get the values from the original object using filters[value] where value represents each string contained in filtersKey exposed by the ng-repeat.