Reputation: 502
Working with a JSON data, javascript change the order of the objects from this:
{
"01": { "disabled": 0, "factor": 10, "id": "01", "tickets": 0 },
"02": { "disabled": 0, "factor": 10, "id": "02", "tickets": 0 },
"03": { "disabled": 0, "factor": 10, "id": "03", "tickets": 0 },
"04": { "disabled": 0, "factor": 10, "id": "04", "tickets": 0 },
"05": { "disabled": 0, "factor": 10, "id": "05", "tickets": 0 },
"06": { "disabled": 0, "factor": 10, "id": "06", "tickets": 0 },
"07": { "disabled": 0, "factor": 10, "id": "07", "tickets": 0 },
"08": { "disabled": 0, "factor": 10, "id": "08", "tickets": 0 },
"09": { "disabled": 0, "factor": 10, "id": "09", "tickets": 0 },
"10": { "disabled": 0, "factor": 10, "id": "10", "tickets": 0 },
"11": { "disabled": 1, "factor": 40, "id": "11", "tickets": 0 }
}
To this:
{
"10": { "disabled": 0, "factor": 10, "id": "10", "tickets": 0 },
"11": { "disabled": 1, "factor": 40, "id": "11", "tickets": 0 },
"01": { "disabled": 0, "factor": 10, "id": "01", "tickets": 0 },
"02": { "disabled": 0, "factor": 10, "id": "02", "tickets": 0 },
"03": { "disabled": 0, "factor": 10, "id": "03", "tickets": 0 },
"04": { "disabled": 0, "factor": 10, "id": "04", "tickets": 0 },
"05": { "disabled": 0, "factor": 10, "id": "05", "tickets": 0 },
"06": { "disabled": 0, "factor": 10, "id": "06", "tickets": 0 },
"07": { "disabled": 0, "factor": 10, "id": "07", "tickets": 0 },
"08": { "disabled": 0, "factor": 10, "id": "08", "tickets": 0 },
"09": { "disabled": 0, "factor": 10, "id": "09", "tickets": 0 }
}
Note the "10" and "11" rows at the begin even in the original JSON are at the end.
I fix it with this:
var data = JSON.parse(json_data);
var keys = Object.keys(data).sort();
for ( var k in keys )
{
var key = keys[k];
var row = data[key];
console.log(row);
};
How to prevent javascript from changing the order of the rows?
That ERROR (because it is) made me mad. :-/
Thanks for any help.
Upvotes: 0
Views: 1935
Reputation: 1515
You should check bpierre's answer to "Does JavaScript Guarantee Object Property Order?".
To sum it up, the definition of an Object in ECMAScript says
It is an unordered collection of properties [...]
In his answer, he recommends the use of Map
in the more recent versions of JavaScript.
So the answer is no, you can't prevent JavaScript from changing the order of the JSON, because there is no definitive order in the first place.
Upvotes: 1