Подтвердить что ты не робот

Почему Safari 5 не сортирует массив объектов?

Кто-нибудь знает, почему 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
4b9b3361

Ответ 1

Ваша функция сравнения неверна:

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

Ожидается, что функция вернет отрицательный, нулевой или положительный результат в зависимости от того, b, a = b или > b. Ваша функция возвращает логическое значение, указывающее, является ли a > b. Попробуйте что-то вроде:

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