Метод sort() використовується для сортування елементів масиву на місці (змінює порядок елементів у масиві). За замовчуванням, метод sort() впорядковує елементи у лексикографічному порядку - тобто як рядки.
Що виконує метод:
Сортує і змінює вихідний масив.
Повертає змінений масив, тобто посилання на відсортований вихідний.
За замовчуванням сортує за зростанням.
Сортування відбувається шляхом приведення значень до рядка і порівняння порядкових номерів у таблиці Unicode.
У той же час великі і малі літери метод sort() розглядає як різні символи і розташовує згідно з таблицею символів unicode. Порядковий номер великих літер менший, ніж у малих.
Сортування чисел за арифметичним зростанням і спаданням
Щоб сортування за зростанням чи спаданням відбувалось по арифметичним правилам у метод sort() передають колбек-функцію порівняння (compare function) з двома параметрами. Від результату цієї функції буде залежати порядок сортування.
Синтаксис:
array.sort((a, b) => {
// Тіло колбек-функції
});
a - перший елемент для порівняння.
b - другий елемент для порівняння.
Сортування за арифметичним зростанням
Якщо виклик колбек функції повертає відʼємне значення тобто a < b, сортування поставить a перед b. Це буде сортування за зростанням.
Для спрощення запису можна використвувати неявне повернення.
Сортування за арифметичним спаданням
Якщо виклик колбек функції повертає будь-яке додатне значення більше нуля, тобто b > a, сортування поставить b перед a. Тобто це - сортування за спаданням.
Якщо виклик колбек функції повертає 0, сортування залишить a і b незмінними по відношенню один до одного, але відсортує їх по відношенню до всіх інших елементів.
Сортування рядків (регістронезалежне)
Вище ми розглянули сортування масиву рядків за алфавітом, але малі літери при цьому виносилися ніби окремим алфавітом після великих літер. Цей ефект усуває використання в методі sort() колбек функції із методом рядків localeCompare().
firstString.localeCompare(secondString)
Метод localeCompare() викликається на рядку, який треба порівняти (firstString) і як аргумент йому в круглих дужках передають другий рядок (secondString).
За описпними вище принципами можна сортувати масиви обʼєктів. Відсортуємо нижченаведений масив обʼєктів за зростанням віку, спаданням віку і за алфавітом.