TS/JS 如何找到嵌套对象的索引 属性?

TS/JS How can I find an index of objects nested property?

我有一个类型为 'Human':

的虚拟对象数组
    {
      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

我要么需要有关如何使这些数组函数工作的帮助,要么需要一个能给我相同结果的不同解决方案。

Array.findIndex 和 Array.lastIndexOf 的工作方式不同。

findIndex 采用 returns 布尔值的 lambda,而 lastindexof 采用要搜索的对象。

要解决您的问题,您可以在数组上调用 .reverse,然后再次使用 findIndex。

您正在寻找

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);
//          ^^^^^^^^^

看来你把它们搞混了。