There is no guarantee of order for... in loop.
Wait what?
There is no logic in the "order" of object keys. If you want, you can capture them, then use .sort on them. The language specification explicitly talks about this in the for...in iterative algorithm:
The mechanics and order of listing properties (step 6.a in the first algorithm, step 7.a in the second) is not indicated.
What are your options:
In JavaScript, most ordered timelists are represented by arrays . You can create an array for us if this is an ordered list in your case:
var values= ["key1","key2","key3"]; for(var i=0;i<values.length;i++){ values[i];
Since order is guaranteed, you can also easily reverse it:
var values= ["key1","key2","key3"].reverse();//reverse is an array method for(var i=0;i<values.length;i++){ values[i];// order is guaranteed here. }
If you already have an object , you can take its keys and .sort them based on some criterion, for example, in lexicographic order:
var obj = {"key1":"value1","key2":"value2","key3":"value3"}; var keys = Object.keys(obj).sort().reverse();
note: you can pass the .sort comparator and cancel it for you instead of chaining, which is probably better. I kept it for pedagogical purposes.
source share