任何人都知道为什么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
答案 0 :(得分:47)
您的比较功能错误:
function(a,b){return a.a > b.a;}
该函数预计会返回负数,零或正数,具体取决于是否< b,a = b或a>湾您的函数返回一个布尔值,指示是否>湾尝试类似:
function(a,b){return a.a - b.a;}