Почему Safari 5 не сортирует массив объектов? - PullRequest
18 голосов
/ 29 ноября 2010

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

1 Ответ

47 голосов
/ 29 ноября 2010

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

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

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

function(a,b){return a.a - b.a;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...