From 47b6747bb0ef4cfc6a42a497ce1b69633c409615 Mon Sep 17 00:00:00 2001 From: dudaodong Date: Sun, 15 May 2022 18:25:46 +0800 Subject: [PATCH] feat: add MinBy function --- mathutil/mathutil.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/mathutil/mathutil.go b/mathutil/mathutil.go index a0e38a9..a3defbe 100644 --- a/mathutil/mathutil.go +++ b/mathutil/mathutil.go @@ -140,6 +140,27 @@ func Min[T lancetconstraints.Number](numbers ...T) T { return min } +// MinBy search the minimum value of a slice using the given comparator function. +func MinBy[T any](slice []T, comparator func(T, T) bool) T { + var min T + + if len(slice) == 0 { + return min + } + + min = slice[0] + + for i := 1; i < len(slice); i++ { + val := slice[i] + + if comparator(val, min) { + min = val + } + } + + return min +} + // Average return average value of params func Average[T lancetconstraints.Number](numbers ...T) T { var sum T