【发布时间】:2011-09-03 02:28:18
【问题描述】:
尝试对 JSON 对象进行排序时遇到问题。基本上,人们可以以任何随机顺序将产品添加到我们的订单中,但它在摘要中显示的顺序需要是我们希望它们的位置(而不是他们选择它们的顺序),所以这就是我需要排序的原因'id'(或者我们稍后会按 'pos' 字段排序)
基本上,我需要按 id 升序排序。 1,2,103 而不是 2,103,1
我似乎遇到了问题,因为单个对象的索引是数字(或者只是它们存在的事实......)。
我需要按照 array.sort(function(a,b){ return a.id-b.id });但我认为这不起作用,因为 1,它不是一个数组(它是一个对象),而 2,它有那些讨厌的索引(我需要我的代码的另一部分)......
有什么想法吗????
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"
}
};
【问题讨论】:
-
对象本质上是无序的(即,属性包没有“排序”);你期望的结果是什么?
-
我认为他使用的是一个对象作为关联数组,而不是他真正想要的“稀疏数组”。
-
使用对象数组。此外,检查 underscore.js。挺好看的。
标签: javascript jquery json sorting object