2012-05-13 68 views
0

我有以下阵列:JS数组排序

var events = [ 
{id : 1, start : 100, end : 120}, 
{id : 2, start : 60, end : 240}, 
{id : 3, start : 700, end : 720} 
]; 

如何排序基于start指数,同时保留id类似:

var events = [ 
{id : 2, start : 60, end : 240}, 
{id : 1, start : 100, end : 120}, 
{id : 3, start : 700, end : 720} 
]; 

我想:

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

但都没有工作:(

+0

[排序的JavaScript对象的数组]的可能的复制(http://stackoverflow.com/questions/979256/sorting-an-array-of-javascript-objects) – diziaq

回答

5

array.sort(..)函数将数组的两个元素(正在进行比较)传递给您指定的比较器函数。因为在这种情况下,ab是诸如{id : 3, start : 700, end : 720}之类的对象,因此无法像a-b那样进行真正的比较。

使用此来代替:

events.sort(function(a,b){return a.start - b.start;});