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
To sort an array of objects, you use the sort() method and provide a comparison function that determines the order of objects.
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;}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With