Page 116 - 6105
P. 116
Наприклад, вкажемо цю функцію явно, відсортуємо елементи масиву як
числа:
function compareNumeric (a, b) {
if (a> b) return 1;
if (a <b) return -1;
}
var arr = [1, 2, 15];
arr.sort (compareNumeric);
alert (arr); // 1, 2, 15
Зверніть увагу, ми передаємо в sort () саме саму функцію compareNumeric,
без виклику через дужки. Був би помилкою наступний код:
arr.sort (compareNumeric ()); // не спрацює
Як видно з прикладу вище, функція, передана sort, повинна мати два
аргументи. Алгоритм сортування, вбудований в JavaScript, буде передавати їй для
порівняння елементи масиву. Вона повинна повертати додатнє значення, якщо a>
b, від’ємне значення, якщо a <b, якщо рівні – можна 0, але взагалі – не важливо,
що повертати, якщо їх взаємний порядок не має значення.
У методі sort, всередині самого інтерпретатора JavaScript, реалізований
універсальний алгоритм сортування. Як правило, це «« швидке сортування »»,
додатково оптимізоване для невеликих масивів. Він вирішує, які пари елементів і
коли порівнювати, щоб впорядкувати швидше. Йому необхідно надати функцію,
тобто метод порівняння, далі він викликає її сам.
Ті значення, з якими sort викликає функцію порівняння, можна побачити,
якщо вставити в неї alert:
[1, -2, 15, 2, 0, 8] .sort (function (a, b) {
alert (a + "<>" + b);
});
115