2011-05-03 127 views
1

我有对象文本的一个这样的数组:对象的排序数组

var myArr = []; 

myArr[0] = { 
    'score': 4, 
    'name': 'foo' 
} 

myArr[1] = { 
    'score': 1, 
    'name': 'bar' 
} 

myArr[2] = { 
    'score': 3, 
    'name': 'foobar' 
} 

我会如何对数组进行排序,因此上升通过“分数”参数,它会改变为:

myArr[0] = { 
    'score': 1, 
    'name': 'bar' 
} 

myArr[1] = { 
    'score': 3, 
    'name': 'foobar' 
} 

myArr[2] = { 
    'score': 4, 
    'name': 'foo' 
} 

在此先感谢。

+2

您正在对一组对象进行排序。他们不再是文字。 – 2011-05-03 22:34:23

回答

7

尝试myArr.sort(function (a, b) {return a.score - b.score});

数组中的元素进行排序的方式取决于什么号码在返回传递的函数:

  • < 0(负数):a去的b
  • > 0提前(正号码):b继续a
  • 0:在这种情况下这两个数字将在排序列表中相邻。然而,这种排序并不能保证稳定:ab相对于彼此的顺序可能更改。
+1

+1。看看[这个参考](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort)为什么使用'-'而不是''。 – 2011-05-03 22:32:13

+0

@Tomalak Geret'kal:在您输入您的评论时,我添加了一段说明。希望我很清楚。虽然这是一个非常好的参考! – 2011-05-03 22:34:07

+0

谢谢,但可惜它没有奏效。也没有:myArr.sort(function(a,b){myArr [a] .score - myArr [b] .score}); – katherine 2011-05-03 22:35:27