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
   111   112   113   114   115   116   117   118   119   120   121