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);
// ^^^^^^^^^
看来你把它们搞混了。
我有一个类型为 '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);
// ^^^^^^^^^
看来你把它们搞混了。