Reputation: 8414
This is my json:
{"event": {
"items": [
{"position": "2", "name": "John Doe 1"},
{"position" : "1", "name": "John Doe 2"},
{"position": "3", "name": "John Does 3"}
]
}
This is how I loop through results after reading the json result:
$.each(data.event.items, function(val) {
$('#list').append('<li>'+data.event.items[val].name+'</li>');
});
Right now the order is: John Doe 1, John Doe 2, John Doe 3. I want to loop them and display them in order of the position that is has been given. So the correct order would be John Doe 2, John Doe 1, John Doe 3.
How can I achieve that?
Upvotes: 0
Views: 547
Reputation: 173642
You will need to sort the items first:
data.event.items.sort(function(item_a, item_b) {
return item_a.position - item_b.position;
});
Upvotes: 4
Reputation: 382264
You can sort your items before building the display :
data.event.items.sort(function(a,b) {
return a.position-b.position;
});
Demonstration (click "Run with JS")
Please note that there is no JSON in your problem, data
is a plain JavaScript object.
Upvotes: 6