Как работает метод sort в js?
3 года назад
Andrey Moshkov
Ответы
Метод массива sort(), как можно догадаться из названия - занимается сортировкой содержимого на вызванном массиве.
Данный метод имеет особенности:
- Мутирует исходный массив. Т.е. данный метод не возвращает новый, а именно меняет тот массив, на котором происходит вызов.
- Может принимать в качестве аргумента функцию-компаратор, или сортирует в лексическом порядке по возрастанию, если функция не задана.
Рассмотрим синтаксис подробнее:
Рассмотрим пример:
Вывод может озадачить, но мы помним, что метод sort()
по умолчанию сортирует в лексическом порядке по возрастанию. Т.е. перед сравнением значения будут переведены в строку.
Чтобы добиться желаемого результата, нужно написать функцию-аргумент, в которой и указать способ сравнения. Функция-компаратор в свою очередь, если она предоставлена,
определяет сортировку всех элементов в массиве за исключением undefined. Все неопределенные элементы просто будут поставлены в конец массива, и неопределенные элементы не передаются в функцию сравнения.
Как в данном случае работает функция-компаратор?
- Если a - b меньше 0, сортировка поставит a по меньшему индексу, чем b, то есть, a идёт первым.
- Если a - b вернёт 0, сортировка оставит a и b неизменными по отношению друг к другу, но отсортирует их по отношению ко всем другим элементам.
- Если a - b больше 0, сортировка поставит b по меньшему индексу, чем a.
3 года назад
Вячеслав Межуревский