Доброе время суток!
Популярность запроса «chrome javascript sort bug» в большинстве своем ссылается на ошибки связанные с различием в понимании типов в Chrome и других браузерах.
Как всем нормальным программистам известно, сортировка массива чисел отличается от строк, отображающих эти числа.
Унификация сортировки в разных браузерах достигается путем указания функции сравнения в параметрах метода sort:
arr.sort(function (a,b) {return a-b;})
Но я столкнулся с другой ситуацией (https://jsfiddle.net/1fu3s8og/):
alert([«2176»,«1»,«2246»,«29»,«27»,«1853»,«1986»,«104»,«2357»,«1000»,«55501»].sort(function (a,b) {return 0;}).join(","))
по идее должен выдавать начальный массив, но как бы не так!
Причем, еще мистификация — убирая последний, 11-й элемент, код начинает работать стабильно.
alert([«2176»,«1»,«2246»,«29»,«27»,«1853»,«1986»,«104»,«2357»,«1000»].sort(function (a,b) {return 0;}).join(","))
Есть ли у кого фиксы данной проблемы?
Популярность запроса «chrome javascript sort bug» в большинстве своем ссылается на ошибки связанные с различием в понимании типов в Chrome и других браузерах.
Как всем нормальным программистам известно, сортировка массива чисел отличается от строк, отображающих эти числа.
Унификация сортировки в разных браузерах достигается путем указания функции сравнения в параметрах метода sort:
arr.sort(function (a,b) {return a-b;})
Но я столкнулся с другой ситуацией (https://jsfiddle.net/1fu3s8og/):
alert([«2176»,«1»,«2246»,«29»,«27»,«1853»,«1986»,«104»,«2357»,«1000»,«55501»].sort(function (a,b) {return 0;}).join(","))
по идее должен выдавать начальный массив, но как бы не так!
Причем, еще мистификация — убирая последний, 11-й элемент, код начинает работать стабильно.
alert([«2176»,«1»,«2246»,«29»,«27»,«1853»,«1986»,«104»,«2357»,«1000»].sort(function (a,b) {return 0;}).join(","))
Есть ли у кого фиксы данной проблемы?
Поделиться с друзьями
Starche
А что вы вообще ожидали, когда писали «sort(function (a,b) {return 0;})»? Сортировка в JS не обязательно обладает устойчивостью, вот тут https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/sort в первом абзаце написано
Starche
А, ну и по поводу мистики.
До 10 элементов включительно используется сортировка вставками. а выше — модифицированный quicksort. Подробности тут https://habrahabr.ru/post/265079/