Page 165 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 165

Подобно тому, как нас не всегда заботит индекс элемента в пределах массива, сам
       элемент нас тоже не всегда интересует:  иногда мы просто хотим знать, есть он или
       нет. Очевидно, мы можем использовать одну из приведенных выше функций и выяс­
                              -
       нить, возвращает ли она  1   или null, но в JavaScript есть для этого два метода: some
       и every.
                                t
          Метод some возвращает  r ue, если находит элемент, который соответствует кри­
                                                                    )
       терию (это все, что нужно, дальнейший поиск сразу прекращается ,   и  false в про­
       тивном случае. Вот пример.
       const  arr  =  [ 5 ,   7 ,   1 2 ,   1 5 ,   1 7 ] ;
       arr . some ( x   =>  х%2===0 )  ;            //  true;  1 2   четно
       arr . some ( x   =>  NumЬer . i s i nteger ( M ath . sqrt ( x ) ) ) ;    //  false;  нет  квадратов
          Метод  every возвращает t r ue, если каждый элемент в  массиве удовлетворяет
       критерию, и  false в противном случае. Он прекращает поиск и возвращает false,
       как только найдет элемент, не соответствующий критерию; в противном случае он
       должен будет просмотреть весь массив.

       const  arr  =  [ 4 ,   6,  1 6 ,  3 6 ] ;
                          =
       arr . every ( x   =>  х%2== 0 ) ;           //  true;  нет  нечетных  чисел
       arr . every ( x   =>  NumЬer . isinteger ( M ath . sqrt ( x ) ) ) ;    / /   false;  6  - не  квадрат
          Как и все методы в этой главе, которым передается проверочная функция, s o me
       и every имеют второй параметр, который позволяет вам определить значение this
       при вызове функции.


                        n
       Фундамента ьн ы е   опера ц и и
       н а д   массивом: map и  f i l  ter

          Из всех операций над массивом map и  f i l  ter вы найдете самыми полезными.
       Просто удивительно, чего можно достичь с помощью этих двух методов.
          Метод map преобразует элементы в массиве. Во что? Это вам решать. У вас есть
       объекты, которые содержат числа, а вам нужны именно сами числа? Легко! Ваш мас­
       сив содержит функции, а нужны возвращаемые ими значения? Легко! Всякий раз,
       когда массив находится в  одном формате,  а необходим другой,  используйте метод
       map. Методы map и  f i l t er возвращают копии и не изменяют исходный массив. Да­
       вайте рассмотрим несколько примеров.
                                                                  e
       const  cart  =  [  {  name :  "Widget " ,   price :  9 .   95  } ,  {  name :  "Gadg t " ,  price :  22 . 95
       } ]   ;
                                                              t
                                       e
       const  names  =  cart . m ap ( x   =>  x  . n am ) ;   //  [ " Widge " ,  "Gadge " J
                                                                       t
                                                           5
                                         e
       const  prices  =  cart . m ap ( x   =>  x  . p ric ) ;   //  [9. 9 ,   22 . 95]
                                 e
       const  discountPrices  =  pric s . m ap ( x   =>  х* О  . 8 ) ;  //  [ 7 . 96,  1 8 . 36}
       const  lcNames  =  names . m ap ( S tring . toLowerCas ) ;  //  [ " widg t " ,   "gadge " ]
                                                e
                                                             e
                                                                       t
       1 6 6    Глава 8. Массивы и их обработка
   160   161   162   163   164   165   166   167   168   169   170