diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/utils.go | 14 | ||||
-rw-r--r-- | utils/utils_test.go | 16 |
2 files changed, 30 insertions, 0 deletions
diff --git a/utils/utils.go b/utils/utils.go index 87c81b70f..dd60f6060 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -34,3 +34,17 @@ func FileExistsInConfigFolder(filename string) bool { } return false } + +func RemoveDuplicatesFromStringArray(arr []string) []string { + result := make([]string, 0, len(arr)) + seen := make(map[string]bool) + + for _, item := range arr { + if !seen[item] { + result = append(result, item) + seen[item] = true + } + } + + return result +} diff --git a/utils/utils_test.go b/utils/utils_test.go index 41e995e63..88356dadb 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -28,3 +28,19 @@ func TestStringArrayIntersection(t *testing.T) { t.Fatal("should be 1") } } + +func TestRemoveDuplicatesFromStringArray(t *testing.T) { + a := []string{ + "a", + "b", + "a", + "a", + "b", + "c", + "a", + } + + if len(RemoveDuplicatesFromStringArray(a)) != 3 { + t.Fatal("should be 3") + } +} |