Page 167 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 167
1 1 ]
/ / (далее для краткости мы выводим только длину)
/ / получить все бубны:
cards . f ilter ( c => c . suit ' D ' ) ; 1 1 длина : 13
/ / получить все фигуры
cards . f ilter ( c => c . v a l ue > 1 0 ) ; 1 1 длина : 12
/ / получить все червовые фигуры
cards . f ilter ( c => c . v alue > 1 0 & & c . suit === ' Н ' ) ; / / длина : 3
Полагаю, вы начали понимать, как методы map и filter могут быть объединены
для получения интересного эффекта. Скажем, например, мы хотим создать краткое
строковое представление карт в нашей колоде. Мы будем использовать символы
Юникода для мастей и буквы "Р\.', "J", "Q" и "К" для обозначения туза и фигур. По
скольку создающая функция довольно длинна, мы создадим ее отдельно и не будем
пытаться использовать анонимную функцию.
function cardToString ( c )
3
const suits = { ' Н ' : ' \ u2665 ' , ' С ' : ' \ u2 66 ' , ' D ' : ' \ u2 6 6 6 ' , ' S ' : ' \ u2 660 '
} ;
const values = { 1 : ' А ' , 1 1 : ' J ' , 1 2 : ' Q ' , 1 3 : ' К ' } ;
/ / создание ма ссива значений при каждом вызове функции cardToString
/ / не очень эффективно; попробуйте найти лучшее решение
for ( l et i=2 ; i<=l O ; i++) valu s [ i ) = i ;
e
return values [ c . v a l ue ] + suits [ c . s ui ] ;
t
/ / получить в с е карты со значением 2 :
cards . f ilter ( c = > c . v a l ue === 2 )
. m ap ( c ardToString ) ; 1 1 [ «2'1 », «2• », «2+ », «2• » ]
/ / получить все червовые фигуры
cards . f i l ter ( c => c . v alue > 1 0 & & c . suit === ' Н ' )
. m ap ( cardToStrin ) ; / / [ «J'I » , «Q'I », «K'I »
g
r
Ма ия массивов: метод reduce
Из всех методов массивов мой любимый - reduce. В то время как map преобразу
ет каждый элемент в массиве, метод reduce преобразует весь массив. Он называется
reduce потому, что зачастую используется для сведения (reduce) массива к единому
значению. Например, суммирование чисел, хранящихся в массиве, или вычисление их
среднего являются способами свести массив к единому значению. Однако фактически
1 6 8 Глава 8. Массивы и их обработка

