我有一个JSON数组,我试图按值排序。我遇到的问题是我无法通过排序保留JSON结构。
这是JSON数组:
{
caffeineoverdose: '2517',
workhardplayhard: '761277',
familia: '4633452'
}
我想要这样的事情:
{
familia: '4633452',
workhardplayhard: '761277',
caffeineoverdose: '2517
}
答案 0 :(得分:18)
以下是您需要的一切。
就像我在评论中已经说过的那样,你无法对一个对象进行排序..但是你可以把它放到一个数组中并显示结果。
var array=[],obj={
caffeineoverdose:'2517',
workhardplayhard:'761277',
familia:'4633452'
};
for(a in obj){
array.push([a,obj[a]])
}
array.sort(function(a,b){return a[1] - b[1]});
array.reverse();
<强>样本强>
答案 1 :(得分:7)
您可以将其转换为对象数组:
[{ name: 'caffeineoverdose', number: '2517' }, {name: 'workhardplayhard', number: '761277'}, {name: 'familia', number: '4633452'}]
然后按数字排序
array.sort(function(a,b){
return a.number - b.number;
}
);
答案 2 :(得分:6)
那不是JSON,而不是数组。它是一个常规JavaScript对象,您不能对对象的属性强加排序。
如果你想维护元素的顺序,你需要一个数组(同样,这不是JSON,它是JavaScript):
[ [ 'familia', '4633452'] ,
[ 'workhardplayhard', '761277'],
[ 'caffeineoverdose', '2517']
]