我有以下代码摘录:
private getNextFakeLinePosition(startPosition: number): number{
return this.models.findIndex(m => m.fakeObject);
}
此函数向我返回第一个元素的索引,该元素的属性为fakeObject
,其值为真。
我想要的是这样的东西,但我不想查找数组中的所有项目,而是要从特定位置(startPosition
)开始。
注意:这是打字稿,但是解决方案可能在javascript vanilla中。
谢谢。
答案 0 :(得分:1)
对findIndex()
的回调将接收当前索引,因此您可以通过以下方式添加条件:
private getNextFakeLinePosition(startPosition: number): number{
return this.models.findIndex((m, i) => i >= startPosition && m.fakeObject);
}
这不是最有效的解决方案,但是只要您的数组不是太大,就应该可以。
答案 1 :(得分:1)
您可以尝试使用slice
:
private getNextFakeLinePosition(startPosition: number): number {
const index = this.models.slice(startPosition).findIndex(m => m.fakeObject);
return index === -1 ? -1 : index + startPosition;
}
它将对您的输入数组进行切片,并在子数组上找到索引。然后-最后,只需添加startPosition
即可获得真实索引。
答案 2 :(得分:0)
一个模糊但可行的解决方案是跳过索引,直到我们到达起始索引:
let startIndex = 4;
array.findIndex((item, index) => index >= 4 && item.fakeObject);