Page 171 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 171
или еще не были определены. Методы map, filter и reduce не вызывают функцию
для элементов, которые никогда не присваивались или были удалены. Например,
до ЕSб, если бы вы попытались хитро инициализировать массив таким способом, то
были бы разочарованы.
const arr = Array ( l O ) . m ap ( function ( x ) { return 5 } ) ;
a
1
Массив r r был бы массивом с 0 элементами, но все они содержали бы значение
undefined. Т о чно так же, если вы удалите элемент из середины массива, а затем вы
зовете метод map, то получите массив с "дыркой':
const arr = [ 1 , 2 , 3 , 4 , 5 ] ;
r
delete ar [ 2 ] ;
arr . m ap (x => О ) ; // [О, О, <одно пустое место>, О , О]
На практике эта проблема возникает редко, поскольку обычно вы работаете
с массивами, элементы которых заданы явно (а если вам специально понадобил
ся промежуток в массиве, что бывает редко, вы не будете вызывать метод delete
для всего массива), но знать об этом нужно.
Сое и н е н и е строк
д
Довольно часто приходится объединять (строковые) значения элементов масси
ва, используя некий разделитель. Функция Arra у . protot уре . j oin получает один ар
гумент, разделитель (стандартно - запятая, если вы его не укажете), и возвращает
строку с объединенными элементами (включая еще не определенные и удаленные
элементы в виде пустых строк; значения null и undefined также становятся пусты
ми строками).
const arr = [ 1 , nul , "hello" , "world" , true , undefined] ;
l
delete ar [ З ] ;
r
,
,
arr . j o in ( ) ; 11 "1 , h ello, t rue, "
arr . j oin ( ' ' ) ; / / "lhellotrue "
arr . j oin ( ' -- ' ) ; / / "1 -- -- hello -- -- true "
При грамотном использовании (совместно с объединением и конкатенацией
строк) функция Array. prototype . j oin позволяет создать такие элементы, как спис
ки HTML <ul>.
const attribut s = [ " NimЫe " , "Perceptive " , " G enerou " J ;
s
e
n
const html = ' < ul><li> ' + attributes . j oi ( ' < / l i ><li> ' ) + ' < /l i ></ul> ' ;
/ / html : "<ul><li>NimЫe</li><li>Percepti ve</ li><li>Generous</ li></ul>";
Будьте внимательны, не поступайте так с пустым массивом: вы получите один
пустой элемент <li>!
1 7 2 Глава 8. Массивы и их обработка

