@@ -317,36 +317,6 @@ export function filterFn<T>(
317317 return array => nativeFilter . call ( array , predicate ) as T [ ] ;
318318}
319319
320- /** @deprecated This function is confusing, use {@link excludeFirst} instead,
321- * and invert the predicate. */
322- export function filterFirst < T > (
323- array : ArrayLike < T > ,
324- predicate : ( element : T , index : number ) => boolean
325- ) : T [ ] {
326- const result : T [ ] = [ ] ;
327- let i = 0 ;
328- for ( ; i < array . length ; ++ i ) {
329- const element = array [ i ] as T ;
330- if ( predicate ( element , i ) ) {
331- result . push ( element ) ;
332- } else {
333- break ;
334- }
335- }
336- for ( ++ i ; i < array . length ; ++ i ) {
337- result . push ( array [ i ] as T ) ;
338- }
339- return result ;
340- }
341-
342- /** @deprecated This function is confusing, use {@link excludeFirstFn} instead,
343- * and invert the predicate. */
344- export function filterFirstFn < T > (
345- predicate : ( element : T , index : number ) => boolean
346- ) : ( array : ArrayLike < T > ) => T [ ] {
347- return array => filterFirst ( array , predicate ) ;
348- }
349-
350320export function exclude < T , U > (
351321 array : ArrayLike < T | U > ,
352322 predicate : ( element : T | U ) => element is T
@@ -382,7 +352,20 @@ export function excludeFirst<T>(
382352 array : ArrayLike < T > ,
383353 predicate : ( element : T , index : number ) => boolean
384354) : T [ ] {
385- return filterFirst ( array , ( element , index ) => ! predicate ( element , index ) ) ;
355+ const result : T [ ] = [ ] ;
356+ let i = 0 ;
357+ for ( ; i < array . length ; ++ i ) {
358+ const element = array [ i ] as T ;
359+ if ( ! predicate ( element , i ) ) {
360+ result . push ( element ) ;
361+ } else {
362+ break ;
363+ }
364+ }
365+ for ( ++ i ; i < array . length ; ++ i ) {
366+ result . push ( array [ i ] as T ) ;
367+ }
368+ return result ;
386369}
387370
388371export function excludeFirstFn < T > (
0 commit comments