14 lines
394 B
TypeScript
14 lines
394 B
TypeScript
export function minByOrNull<T>(value: Iterable<T>, transform: (it: T) => number): T | null {
|
|
let minIt!: T;
|
|
let minVal: number | undefined;
|
|
for (const it of value) {
|
|
const val = transform(it);
|
|
if (minVal === undefined || val < minVal) {
|
|
minIt = it;
|
|
minVal = val;
|
|
}
|
|
}
|
|
if (minVal === undefined) return null;
|
|
return minIt;
|
|
}
|