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.  Массивы и их обработка
   166   167   168   169   170   171   172   173   174   175   176