Ответ 1
Я пробовал разные числа, и он всегда действует так, как будто 0s не существует и сортирует числа в противном случае. Кто-нибудь знает, почему?
Вы получаете лексикографический вид (например, конвертируете объекты в строки и сортируете их в порядке словаря), который является поведением сортировки по умолчанию в Javascript:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort
array.sort([compareFunction])
Параметры
compareFunction
Определяет функцию, которая определяет порядок сортировки. Если опустить, массив сортируется лексикографически (в порядке словаря) в соответствии со строковым преобразованием каждого элемента.
В спецификации ECMAscript (нормативная ссылка для общего Javascript), ECMA-262, 3-е изд., раздел 15.4.4.11, порядок сортировки по умолчанию лексикографичен, хотя они не выходят и говорят об этом, вместо этого дают шаги для функции концептуального сортирования, которая при необходимости вызывает данную функцию сравнения, в противном случае сравнивая аргументы при преобразовании в строки:
13. If the argument comparefn is undefined, go to step 16.
14. Call comparefn with arguments x and y.
15. Return Result(14).
16. Call ToString(x).
17. Call ToString(y).
18. If Result(16) < Result(17), return −1.
19. If Result(16) > Result(17), return 1.
20. Return +0.