diff --git a/utils/lo2/lo.go b/utils/lo2/lo.go index 9011fe8..69e6150 100644 --- a/utils/lo2/lo.go +++ b/utils/lo2/lo.go @@ -19,6 +19,22 @@ func RemoveAt[T any](arr []T, index int) []T { return append(arr[:index], arr[index+1:]...) } +func RemoveAllDefault[T comparable](arr []T) []T { + var def T + return lo.Filter(arr, func(i T, idx int) bool { + return i != def + }) +} + +func Clear[T comparable](arr []T, item T) { + var def T + for i := 0; i < len(arr); i++ { + if arr[i] == item { + arr[i] = def + } + } +} + func ArrayClone[T any](arr []T) []T { return append([]T{}, arr...) } @@ -29,3 +45,12 @@ func Insert[T any](arr []T, index int, item T) []T { arr[index] = item return arr } + +func Deref[T any](arr []*T) []T { + result := make([]T, len(arr)) + for i := 0; i < len(arr); i++ { + result[i] = *arr[i] + } + + return result +}