summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/utils.go14
-rw-r--r--utils/utils_test.go16
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")
+ }
+}