Page 118 - 6105
P. 118

з  номера  fromIndex,  якщо  він  вказаний.  Якщо  немає  –  з  початку  масиву.  Для

               пошуку використовується строге порівняння ===. Наприклад:


                      var arr = [1, 0, false];
                      alert (arr.indexOf (0)); // 1


                      alert (arr.indexOf (false)); // 2
                      alert (arr.indexOf (null)); // -1

                      Метод  «arr.lastIndexOf  (searchElement  [,  fromIndex])»  шукає  елемент

               справа-наліво: з кінця масиву або з номера fromIndex, якщо він вказаний.

                      Якщо потрібно перевірити, чи існує значення в масиві – всі елементи масиву

               потрібно  перебрати.  Тільки  так.  Внутрішня  реалізація  indexOf  /  lastIndexOf

               здійснює повний перебір, аналогічний циклу for з масиву. Чим довше масив, тим

               довше він буде працювати.


                      Розглянемо задачу – є колекція рядків, і потрібно швидко перевіряти: чи є в
               ній якийсь елемент. Масив для  цього не підходить через повільне  indexOf.  Але


               підходить  об'єкт!  Доступ  до  властивості  об'єкта  здійснюється  дуже  швидко,  так
               що  можна  зробити  все  елементи  ключами  об'єкта  і  перевіряти,  чи  є  вже


               такийключ. Наприклад, організуємо таку перевірку для колекції рядків "div", "a" і

               "form":

                      var store = {}; // об'єкт для колекції

                      var items = [ "div", "a", "form"];

                      for (var i = 0; i <items.length; i ++) {

                        var  key  =  items  [i];  //  для  кожного  елемента

               створюємо властивість
                        store [key] = true; // значення тут не важливо


                      }
                      Тепер для перевірки, чи є ключ key, досить виконати if (store [key]). Якщо є

               – можна використовувати значення, якщо немає – додати. Таке рішення працює






                                                                 117
   113   114   115   116   117   118   119   120   121   122   123