Having a problem trying to sort a JSON object. Basically, people can add products in any random order to our order form, but the order it shows in the summary needs to be how we want them to be positioned (not the order they select them), so thats why I need to sort by ‘id’ (or we’ll sort by a ‘pos’ field later)
Essentially, I need to sort by the id ascending. 1,2,103 instead of 2,103,1
I seem to be having issues because the index into the individual objects are numbers (or just the fact that they’re there…).
I need to do something along the lines of array.sort(function(a,b){ return a.id-b.id }); but I’m presuming that doesn’t work because 1, its not an array (its an object), and 2, it has those pesky indexes (that i need for another part of my code)…
Any ideas????
var products = {
"2": {
"id": "2",
"price": "119",
"quantity": "1",
"thumb": "img\/store\/comp-08n.png"
},
"103": {
"id": "103",
"price": "109",
"quantity": "1",
"thumb": "img\/store\/basketballhoop.png"
},
"1": {
"id": "1",
"price": "309",
"quantity": "1",
"thumb": "img\/store\/comp-08.png"
}
};
How many items do you need in your orders? You can safely sort 10’000 items in a Javascript array without much of speed issues. Why don’t you work with a real array instead?
You could even inject custom properties to it, roughly something like
and add predefined sorters like
** EDIT **
On your PHP side, you might have something like :
will return what you need.
** NOTE **
You should not explicitly set indexes when adding new items in your array. Use the array’s
pushfunction, likeRemoving an item is a bit tricky, however, something like :
See demo here (use Chrome developper tools for console output).