Skip to content

Commit c3d2759

Browse files
committed
feat(filterFirst): delete deprecated function
BREAKING CHANGE: The deprecated function `filterFirst` has been deleted because it is confusing. Use `excludeFirst` instead and invert the predicate.
1 parent 928b19e commit c3d2759

File tree

2 files changed

+14
-39
lines changed

2 files changed

+14
-39
lines changed

index.test.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import {
1414
excludeFirst,
1515
excludeNull,
1616
filter,
17-
filterFirst,
1817
find,
1918
findIndex,
2019
findLast,
@@ -204,13 +203,6 @@ test("filter", t => {
204203
);
205204
});
206205

207-
test("filterFirst", t => {
208-
t.deepEqual(
209-
filterFirst([1, 2, 3, 4, 3, 2, 1], n => n < 3),
210-
[1, 2, 4, 3, 2, 1]
211-
);
212-
});
213-
214206
test("exclude", t => {
215207
t.deepEqual(
216208
exclude([1, 2, 3, 4, 3, 2, 1], n => n < 3),

index.ts

Lines changed: 14 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
350320
export 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

388371
export function excludeFirstFn<T>(

0 commit comments

Comments
 (0)