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. Массивы и их обработка

