@@ -625,6 +625,39 @@ export function findFn<T>(
625625 return array => find ( array , predicate ) ;
626626}
627627
628+ export function findLast < T , U extends T > (
629+ array : ArrayLike < T > ,
630+ predicate : ( element : T ) => element is U
631+ ) : U | null ;
632+ export function findLast < T > (
633+ array : ArrayLike < T > ,
634+ predicate : ( element : T , index : number ) => boolean
635+ ) : T | null ;
636+ export function findLast < T > (
637+ array : ArrayLike < T > ,
638+ predicate : ( element : T , index : number ) => boolean
639+ ) : T | null {
640+ for ( let i = array . length - 1 ; i >= 0 ; -- i ) {
641+ const element = array [ i ] ;
642+ if ( predicate ( element , i ) ) {
643+ return element ;
644+ }
645+ }
646+ return null ;
647+ }
648+
649+ export function findLastFn < T , U extends T > (
650+ predicate : ( element : T ) => element is U
651+ ) : ( array : ArrayLike < T > ) => U | null ;
652+ export function findLastFn < T > (
653+ predicate : ( element : T , index : number ) => boolean
654+ ) : ( array : ArrayLike < T > ) => T | null ;
655+ export function findLastFn < T > (
656+ predicate : ( element : T , index : number ) => boolean
657+ ) : ( array : ArrayLike < T > ) => T | null {
658+ return array => findLast ( array , predicate ) ;
659+ }
660+
628661export function maximum < T extends string | number | boolean > ( array : ArrayLike < T > ) : T | null ;
629662export function maximum < T > ( array : ArrayLike < T > , compare : Comparator < T > ) : T | null ;
630663export function maximum < T > ( array : ArrayLike < T > , compare ?: Comparator < T > ) : T | null {
0 commit comments