Skip to content

Commit 3324194

Browse files
committed
feat(findLastIndex): add findLastIndex function
(cherry picked from commit afdc2d8)
1 parent 2781889 commit 3324194

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

index.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
filterFirst,
1818
find,
1919
findIndex,
20+
findLastIndex,
2021
first,
2122
fold,
2223
fold1,
@@ -279,6 +280,13 @@ test("findIndex", t => {
279280
);
280281
});
281282

283+
test("findLastIndex", t => {
284+
t.is(
285+
findLastIndex([1, 2, 3, 4, 3, 2, 1], n => n >= 3),
286+
4
287+
);
288+
});
289+
282290
test("find", t => {
283291
t.is(
284292
find([1, 2, 3, 4, 3, 2, 1], n => n >= 3),

index.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,24 @@ export function findIndexFn<T>(
546546
return array => findIndex(array, predicate);
547547
}
548548

549+
export function findLastIndex<T>(
550+
array: ArrayLike<T>,
551+
predicate: (element: T, index: number) => boolean
552+
): number | null {
553+
for (let i = array.length - 1; i >= 0; --i) {
554+
if (predicate(array[i], i)) {
555+
return i;
556+
}
557+
}
558+
return null;
559+
}
560+
561+
export function findLastIndexFn<T>(
562+
predicate: (element: T, index: number) => boolean
563+
): (array: ArrayLike<T>) => number | null {
564+
return array => findLastIndex(array, predicate);
565+
}
566+
549567
export function find<T, U extends T>(
550568
array: ArrayLike<T>,
551569
predicate: (element: T) => element is U

0 commit comments

Comments
 (0)