有人知道为什么Safari5(Windows7)不能对对象数组排序吗?
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
您的比较函数错误:
function(a,b){return a.a > b.a;}
根据a<b、a=b或a>b,函数应返回负、零或正。您的函数返回一个布尔值,指示a>b。请尝试如下操作:
function(a,b){return a.a - b.a;}