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

arr . findindex ( o    = >  о  ===  3 ) ;   1 1   возвращает  -1
       arr . findindex ( o    =>  o  . i d  ===  1 7 ) ;   //  возвращает  -1
          Методы  find  и  findindex  применяются при поиске индекса элемента. Но что
       если индекс элемента не интересен, а нужен только сам элемент? Метод find похож
       на findindex тем, что позволяет определять функцию для поиска, но возвращает сам
       элемент, а не индекс (или null, если элемент не был найден).

                                                                 c
       const  arr  =  [ {   id :  5 ,  name :  " J udith"  } ,    {  id :  7 ,   name :  " F ran i s "   } ] ;
       arr . f ind ( o    =>  o  . i d   5 ) ;  / /   возвращает  объект  (  id:  5 ,   пате :  "Judi th "
         r
       ar . find ( o    =>  o  . i d  ===  2 ) ;  / /  возвращает  null
          Функции, которые вы передаете методам find и findindex, получают, кроме каж­
       дого элемента в  их первом аргументе, также индекс текущего  элемента  и  весь  сам
       массив в качестве аргументов. Это позволяет осуществлять, например, поиск квадра­
       тов чисел, соответствующих определенным индексам.
       const  arr  =  [ 1 ,   1 7 ,   1 6 ,   5 ,  4 ,   1 6 ,   1 0 ,   3 ,   4 9 ] ;
                                      e
       arr . f ind ( ( х ,   i )    =>  i  >  2  &&  NurnЬ r . is i n teger ( M ath . s qrt ( x ) ) )  ;    / /  возвращает  4
          Методы  find и  findindex позволяют также использовать переменную this во
       время  вызова функции.  Это  может  быть  очень удобно,  если  вам  нужно  вызвать
       функцию, как будто она является методом объекта. Рассмотрим следующие эквива­
       лентные методики поиска объекта Person по идентификатору.
       class  Person  {
           constructor ( n ame )
               this . name  =  name ;
               this . i d  =  Person . n ext id++ ;


       Person . n extid  =  О ;
       const  j a mie   new  Person ( " J amie " ) ,
            j u liet   new  Person ( " J ulie t " ) ,
             peter   new  Person ( " Peter" ) ,
               j a y   new  Person ( " Jay" ) ;
       const  arr  =  [ j a mie ,   j u liet ,  peter,  j a y ] ;

       // возможность  1 :   прямое  сравнение  идентификатора :
       arr . find (p  =>  p  . i d   ===  j u liet . i d) ;   // возвращает  объект  j u liet

       / /  возможность  2 :   использование  аргумента  "this ":
       arr . f ind (p  =>  p  . i d  ===  this . i d ,   j u liet ) ;    // возвращает  объект  j u liet
          Вы, вероятно, сейчас найдете не много поводов для определения значения this
       в функциях find и findindex, но впоследствии вы увидите, где эта методика весьма
       полезна.




                                                               Поиск в массиве   1 6 5
   159   160   161   162   163   164   165   166   167   168   169