TS / JS Как найти индекс вложенных свойств объектов? - PullRequest
0 голосов
/ 07 августа 2020

У меня есть массив таких фиктивных объектов типа "Человек":

    {
      id: '3',
      details: {
        hair: 'blonde',
        age: 20
     }

, и я хотел бы получить индекс первого и последнего человека того же возраста. Я возлагал большие надежды на

first = arr.map(element => element.details.age).findIndex(20);

, а также

last = arr.lastIndexOf((element) => element.details.age === 20);

, однако оба они выдают одну и ту же ошибку:

Argument of type '(element: any) => boolean' is not assignable to parameter of type 'Human'.
  Type '(element: any) => boolean' is missing the following properties from type 'Human': id, details

Я либо мне нужна помощь в том, как заставить эти функции массива работать, либо другое решение, которое даст мне тот же результат.

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Вы ищете

first = arr.map(element => element.details.age).indexOf(20);
//                                              ^^^^^^^
last = arr.map(element => element.details.age).lastIndexOf(20);
//                                             ^^^^^^^^^^^

или

first = arr.findIndex(element => element.details.age === 20);
//          ^^^^^^^^^

Кажется, вы их перепутали.

0 голосов
/ 07 августа 2020

Array.findIndex и Array.lastIndexOf работают по-разному.

findIndex принимает лямбда, которая возвращает логическое значение, а lastindexof принимает объект для поиска.

Чтобы решить вашу проблему, вы можете позвонить. переверните свой массив, а затем снова используйте findIndex.

...