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

