Badr Hari
Badr Hari

Reputation: 8414

Loop through json result and sort in numeric order

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

Answers (2)

Ja͢ck
Ja͢ck

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

Denys S&#233;guret
Denys S&#233;guret

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

Related Questions