From aa6eaa7319df66a071e75a08d99b30d34b9c8a4e Mon Sep 17 00:00:00 2001 From: Gani Georgiev Date: Sat, 10 Dec 2022 12:08:59 +0200 Subject: [PATCH] optimized list.ToUniqueStringSlice --- tools/list/list.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tools/list/list.go b/tools/list/list.go index aaace6d4..8b67d39b 100644 --- a/tools/list/list.go +++ b/tools/list/list.go @@ -80,7 +80,10 @@ func NonzeroUniques[T comparable](list []T) []T { var zeroVal T for _, val := range list { - if _, ok := existMap[val]; ok || val == zeroVal { + if val == zeroVal { + continue + } + if _, ok := existMap[val]; ok { continue } existMap[val] = struct{}{} @@ -103,8 +106,13 @@ func ToUniqueStringSlice(value any) (result []string) { } // check if it is a json encoded array of strings - if err := json.Unmarshal([]byte(val), &result); err != nil { - // not a json array, just add the string as single array element + if strings.Contains(val, "[") { + if err := json.Unmarshal([]byte(val), &result); err != nil { + // not a json array, just add the string as single array element + result = append(result, val) + } + } else { + // just add the string as single array element result = append(result, val) } case json.Marshaler: // eg. JsonArray