2015-04-01 133 views
0

我要排序的数组中的JSON,根据财产像这样:排序数组

[ 
{num:5},{num:3},{num:6},{num:9} 
] 

排序后,我想

[ 
{num:3},{num:5},{num:6},{num:9} 
] 

怎么做在JavaScript中?

+2

你已经试过了什么?无论如何,这里有很多像这样的问题! :P – briosheje 2015-04-01 08:33:43

+0

@briosheje我之前没有这样做过。我不知道。 :( – Bubble 2015-04-01 08:35:47

+0

您可以使用.sort,.filter或.map,您的选择!:P – briosheje 2015-04-01 08:37:08

回答

7

排序函数(文字)分别返回1,-1,0作为升序,降序和相等。

array.sort(function(a, b) { 
     return a.num - b.num 
}); 
6

the_array.sort(function(a,b) { return a.num-b.num });

在排序中()的函数是比较

3

var arr = [ 
 
    {num:5},{num:3},{num:6},{num:9} 
 
]; 
 

 
arr.sort(function(a,b) { return a.num-b.num; }); 
 

 
document.write(JSON.stringify(arr));

如果您需要对项目进行排序向后这将是b.num-a.num

+0

我将'console.log'改为'document.write',并且还添加了'JSON.stringify()',以便让你的代码更有用:) – nicael 2015-04-01 08:41:18

+0

谢谢@nicael! – 2015-04-01 08:41:53

2

在这种情况下,您应该学会使用lambda表达式,这是函数式编程的关键。答案很简单:

arr.sort(function(a,b){ 
    return a.num - b.num; 
}) 

如果您不知道高阶函数或lambda,那么您实际上并没有编写JavaScript代码。

+0

已经有三个相同的答案。 – nicael 2015-04-01 08:49:12

+0

@nicael其实,我在编辑这篇文章时没有答案。 – Mike 2015-04-01 09:08:31

+1

*有三个答案*,它们是在你的和*完全相同的*之前发布的。相信我,你的是多余的。 – nicael 2015-04-01 09:11:34