Skip to content

Commit d3e010b

Browse files
committed
feat(findLastIndex): add findLastIndex function
(cherry picked from commit afdc2d8)
1 parent 0bd21f7 commit d3e010b

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
fold,
2122
fold1,
2223
foldMap,
@@ -274,6 +275,13 @@ test("findIndex", t => {
274275
);
275276
});
276277

278+
test("findLastIndex", t => {
279+
t.is(
280+
findLastIndex([1, 2, 3, 4, 3, 2, 1], n => n >= 3),
281+
4
282+
);
283+
});
284+
277285
test("find", t => {
278286
t.is(
279287
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
@@ -553,6 +553,24 @@ export function findIndexFn<T>(
553553
return array => findIndex(array, predicate);
554554
}
555555

556+
export function findLastIndex<T>(
557+
array: ArrayLike<T>,
558+
predicate: (element: T, index: number) => boolean
559+
): number | null {
560+
for (let i = array.length - 1; i >= 0; --i) {
561+
if (predicate(array[i], i)) {
562+
return i;
563+
}
564+
}
565+
return null;
566+
}
567+
568+
export function findLastIndexFn<T>(
569+
predicate: (element: T, index: number) => boolean
570+
): (array: ArrayLike<T>) => number | null {
571+
return array => findLastIndex(array, predicate);
572+
}
573+
556574
export function find<T, U extends T>(
557575
array: ArrayLike<T>,
558576
predicate: (element: T) => element is U

0 commit comments

Comments
 (0)