From 5dc9e98f6b8cf286f6f76e57508ab7c9ae5a0772 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Thu, 27 Oct 2022 17:09:48 +0200 Subject: [PATCH] Add langext.ArrFirst / langext.ArrLast --- langext/array.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/langext/array.go b/langext/array.go index 60e9fba..430ef45 100644 --- a/langext/array.go +++ b/langext/array.go @@ -142,6 +142,27 @@ func ArrAnyErr(arr interface{}, fn func(int) (bool, error)) (bool, error) { return false, nil } +func ArrFirst[T comparable](arr []T, comp func(v T) bool) (T, bool) { + for _, v := range arr { + if comp(v) { + return v, true + } + } + return *new(T), false +} + +func ArrLast[T comparable](arr []T, comp func(v T) bool) (T, bool) { + found := false + result := *new(T) + for _, v := range arr { + if comp(v) { + found = true + result = v + } + } + return result, found +} + func AddToSet[T comparable](set []T, add T) []T { for _, v := range set { if v == add {