开发者

Why won't Safari 5 sort an array of objects?

Anyone know why Safari 5 (Windows 7) can't sort arrays of objects?

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);

The console result should be

开发者_开发问答
1,3,2
1,2,3

This works fine in FF and IE but Safari returns:

1,3,2
1,3,2


Your comparison function is wrong:

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

The function is expected to return negative, zero or positive depending on whether a < b, a = b or a > b. Your function returns a boolean indicating whether a > b. Try something like:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜