diff --git a/helper.go b/helper.go index d0a380e..67954e7 100644 --- a/helper.go +++ b/helper.go @@ -1,9 +1,5 @@ package main -import ( - "reflect" -) - type void struct{} // Helps decide if value contained in slice. @@ -20,12 +16,16 @@ func contains(s []string, n string) bool { // Helps clear duplicates in slice. // https://stackoverflow.com/questions/66643946/how-to-remove-duplicates-strings-or-int-from-slice-in-go -func dedupe(input []string) []reflect.Value { +func dedupe(input []string) []string { set := make(map[string]void) + list := []string{} for _, v := range input { - set[v] = void{} + if _, ok := set[v]; !ok { + set[v] = void{} + list = append(list, v) + } } - return reflect.ValueOf(set).MapKeys() + return list } diff --git a/helper_test.go b/helper_test.go index f62d053..0b551b0 100644 --- a/helper_test.go +++ b/helper_test.go @@ -17,3 +17,11 @@ func TestContains(t *testing.T) { } } } + +func TestDedupe(t *testing.T) { + dupes := []string{"one", "one", "two", "three", "three", "three"} + + if len(dedupe(dupes)) != 3 { + t.Fail() + } +}
home › develop › 0bf981b › 750acd1