使用Javascript按值对JSON数组对象进行排序

时间:2014-01-07 16:54:42

标签: javascript arrays json sorting

我有一个JSON数组,我试图按值排序。我遇到的问题是我无法通过排序保留JSON结构。

这是JSON数组:

{
  caffeineoverdose: '2517',
  workhardplayhard: '761277',
  familia: '4633452'
}

我想要这样的事情:

{
  familia: '4633452',
  workhardplayhard: '761277',
  caffeineoverdose: '2517
}

3 个答案:

答案 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();

<强>样本

http://jsfiddle.net/GB23m/1/

答案 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']
]