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

bas*_*nt0 8 javascript arrays sorting json

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

这是JSON数组:

{
  caffeineoverdose: '2517',
  workhardplayhard: '761277',
  familia: '4633452'
}
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

{
  familia: '4633452',
  workhardplayhard: '761277',
  caffeineoverdose: '2517
}
Run Code Online (Sandbox Code Playgroud)

coc*_*cco 19

这是你需要的一切.

就像我在评论中已经说过的那样你不能对一个对象进行排序..但是你可以把它放到一个数组中并显示结果.

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();
Run Code Online (Sandbox Code Playgroud)

DEMO

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

  • 您可以将sort函数更改为`b [1] - a [1]`,而不是使用`array.reverse()`. (4认同)

cej*_*ast 8

您可以将其转换为对象数组:

[{ name: 'caffeineoverdose', number: '2517' }, {name: 'workhardplayhard', number: '761277'}, {name: 'familia', number: '4633452'}]
Run Code Online (Sandbox Code Playgroud)

然后按编号排序

array.sort(function(a,b){
    return a.number - b.number;
    }
);
Run Code Online (Sandbox Code Playgroud)


mea*_*gar 6

这不是JSON,它不是一个数组.它是一个常规JavaScript对象,您不能对对象的属性强加排序.

如果要维护元素的顺序,则需要一个数组(同样,这不是JSON,而是JavaScript):

[ [ 'familia', '4633452'] ,
  [ 'workhardplayhard', '761277'],
  [ 'caffeineoverdose', '2517']
]
Run Code Online (Sandbox Code Playgroud)