Skip to content

Commit fa0d591

Browse files
committed
💪 iter_map_not_null/iter_first_not_null现在可以不提供callbackfn
1 parent 6513ffe commit fa0d591

2 files changed

Lines changed: 37 additions & 21 deletions

File tree

util/deno.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@gaubee/util",
3-
"version": "0.26.3",
3+
"version": "0.26.4",
44
"exports": {
55
"./abort": "./src/abort.ts",
66
"./bigint": "./src/bigint.ts",

util/src/iterable.ts

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -107,24 +107,32 @@ export const iter_map_reduce = <
107107
*
108108
* 支持任何可迭代的对象
109109
*/
110-
export const iter_map_not_null = <TS extends Iterable<T>, T = IterableItem<TS>, R = unknown>(
110+
export const iter_map_not_null = <TS extends Iterable<T>, T = IterableItem<TS>, R = T>(
111111
values: TS,
112-
callbackfn: (
112+
callbackfn?: (
113113
value: T,
114114
index: number,
115115
values: TS,
116116
) => R,
117117
): Array<NonNullable<R>> => {
118118
const result: NonNullable<R>[] = [];
119119
let index = 0;
120-
for (const value of values) {
121-
const r = callbackfn(
122-
value,
123-
index++,
124-
values,
125-
);
126-
if (r != null) {
127-
result.push(r);
120+
if (callbackfn) {
121+
for (const value of values) {
122+
const r = callbackfn(
123+
value,
124+
index++,
125+
values,
126+
);
127+
if (r != null) {
128+
result.push(r);
129+
}
130+
}
131+
} else {
132+
for (const value of values) {
133+
if (value != null) {
134+
result.push(value as unknown as NonNullable<R>);
135+
}
128136
}
129137
}
130138
return result;
@@ -137,21 +145,29 @@ export const iter_map_not_null = <TS extends Iterable<T>, T = IterableItem<TS>,
137145
*/
138146
export const iter_first_not_null = <TS extends Iterable<T>, T = IterableItem<TS>, R = unknown>(
139147
values: TS,
140-
callbackfn: (
148+
callbackfn?: (
141149
value: T,
142150
index: number,
143151
values: TS,
144152
) => R,
145-
): R | undefined => {
153+
): NonNullable<R> | undefined => {
146154
let index = 0;
147-
for (const value of values) {
148-
const r = callbackfn(
149-
value,
150-
index++,
151-
values,
152-
);
153-
if (r != null) {
154-
return r;
155+
if (callbackfn) {
156+
for (const value of values) {
157+
const r = callbackfn(
158+
value,
159+
index++,
160+
values,
161+
);
162+
if (r != null) {
163+
return r;
164+
}
165+
}
166+
} else {
167+
for (const value of values) {
168+
if (value != null) {
169+
return (value as unknown as NonNullable<R>);
170+
}
155171
}
156172
}
157173
};

0 commit comments

Comments
 (0)