为什么Safari 5不会对对象数组进行排序?

时间:2010-11-28 21:02:09

标签: javascript arrays safari

任何人都知道为什么Safari 5(Windows 7)无法对对象数组进行排序?

var arr = [{a:1},{a:3},{a:2}];
console.log(arr[0].a+','+arr[1].a+','+arr[2].a);
arr.sort(function(a,b){return a.a > b.a;});
console.log(arr[0].a+','+arr[1].a+','+arr[2].a);

控制台结果应为

1,3,2
1,2,3

这在FF和IE中工作正常,但Safari返回:

1,3,2
1,3,2

1 个答案:

答案 0 :(得分:47)

您的比较功能错误:

function(a,b){return a.a > b.a;}

该函数预计会返回负数,零或正数,具体取决于是否< b,a = b或a>湾您的函数返回一个布尔值,指示是否>湾尝试类似:

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