@@ -261,29 +261,11 @@ export function filterFn<T>(
261
261
262
262
/** @deprecated This function is confusing, use {@link excludeFirst} instead,
263
263
* and invert the predicate. */
264
- export function * filterFirst < T > (
264
+ export function filterFirst < T > (
265
265
iterable : Iterable < T > ,
266
266
predicate : ( element : T , index : number ) => boolean
267
267
) : Iterable < T > {
268
- const iterator = iterable [ Symbol . iterator ] ( ) ;
269
- let element = iterator . next ( ) ;
270
-
271
- for ( let i = 0 ; element . done !== true ; ++ i ) {
272
- if ( predicate ( element . value , i ) ) {
273
- break ;
274
- }
275
- yield element . value ;
276
- element = iterator . next ( ) ;
277
- }
278
-
279
- if ( element . done !== true ) {
280
- element = iterator . next ( ) ;
281
- }
282
-
283
- while ( element . done !== true ) {
284
- yield element . value ;
285
- element = iterator . next ( ) ;
286
- }
268
+ return excludeFirst ( iterable , ( element , index ) => ! predicate ( element , index ) ) ;
287
269
}
288
270
289
271
/** @deprecated This function is confusing, use {@link excludeFirstFn} instead,
@@ -311,11 +293,29 @@ export function excludeNull<T>(iterable: Iterable<T | null | undefined>): Iterab
311
293
return filter ( iterable , isNotNull ) ;
312
294
}
313
295
314
- export function excludeFirst < T > (
296
+ export function * excludeFirst < T > (
315
297
iterable : Iterable < T > ,
316
298
predicate : ( element : T , index : number ) => boolean
317
299
) : Iterable < T > {
318
- return filterFirst ( iterable , ( element , i ) => ! predicate ( element , i ) ) ;
300
+ const iterator = iterable [ Symbol . iterator ] ( ) ;
301
+ let element = iterator . next ( ) ;
302
+
303
+ for ( let i = 0 ; element . done !== true ; ++ i ) {
304
+ if ( predicate ( element . value , i ) ) {
305
+ break ;
306
+ }
307
+ yield element . value ;
308
+ element = iterator . next ( ) ;
309
+ }
310
+
311
+ if ( element . done !== true ) {
312
+ element = iterator . next ( ) ;
313
+ }
314
+
315
+ while ( element . done !== true ) {
316
+ yield element . value ;
317
+ element = iterator . next ( ) ;
318
+ }
319
319
}
320
320
321
321
export function excludeFirstFn < T > (
0 commit comments