所以这是对象:
如您所见,最后一笔金额(2000)低于10000,但仍然在最后。我正在尝试显示按金额排序的元素。我知道我必须将对象转换为数组并对其使用排序,但我不知道如何正确地执行此操作。
编辑:我尝试过这样的事情没有取得任何成功:var packs_array = [];
jQuery.each(json.purchase_packs, function(i, pack) {
packs_array.push(pack);
});
packs_array.sort();
答案 0 :(得分:1)
为此,您需要先将对象转换为数组...
var arr = $.map(json.purchase_packs, function(v) { return v; });
...然后使用自定义排序功能对此数组进行排序:
arr.sort(function(a, b) {
return a.amount - b.amount;
});
Demo。请注意,排序是就地操作(即arr.sort
改变现有对象。)
答案 1 :(得分:1)
var packs = {
0: { amount: 2000 },
3: { amount: 1000 },
5: { amount: 50 }
};
var sortedPacks = Object.keys(packs)
.map(function (id) {
packs[id].id = parseInt(id, 10);
return packs[id];
})
.sort(function (a, b) {
return a.amount - b.amount;
});
console.log(sortedPacks); // => [{"amount":50,"id":5},{"amount":1000,"id":3},{"amount":2000,"id":0}]
答案 2 :(得分:-1)
JavaScript sort()
函数默认使用列表元素作为字符串。您应指定sort函数以对其他值类型进行排序:
var l = [1, 5, 12, 127, 12, 3, 9];
l.sort(function(a,b){return a-b});
=> [ 1, 3, 5, 9, 12, 12, 127 ]