+GetUniqueElementsOfStringSlices
This commit is contained in:
parent
47cbbb68e8
commit
98f8e21ad2
20
comparisons.go
Normal file
20
comparisons.go
Normal file
@ -0,0 +1,20 @@
|
||||
package utils
|
||||
|
||||
// GetUniqueElementsOfStringSlices finds the elements that are in the first slice but not in the second slice
|
||||
func GetUniqueElementsOfStringSlices(a, b []string) []string {
|
||||
// Create a map to store the elements of "b"
|
||||
mapOfElementsOfSliceB := make(map[string]bool)
|
||||
for _, e := range b {
|
||||
mapOfElementsOfSliceB[e] = true
|
||||
}
|
||||
|
||||
// Iterate through "a" and find the elements that are not in "b"
|
||||
var uniqueElementsOfSliceA []string
|
||||
for _, e := range a {
|
||||
if !mapOfElementsOfSliceB[e] {
|
||||
uniqueElementsOfSliceA = append(uniqueElementsOfSliceA, e)
|
||||
}
|
||||
}
|
||||
|
||||
return uniqueElementsOfSliceA
|
||||
}
|
47
comparisons_test.go
Normal file
47
comparisons_test.go
Normal file
@ -0,0 +1,47 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGetUniqueElementsOfStringSlices(t *testing.T) {
|
||||
data := []map[string][]string{
|
||||
{
|
||||
"a": []string{"apple", "banana", "cherry"},
|
||||
"b": []string{"banana", "cherry", "date", "fig"},
|
||||
"expectedResult": []string{"apple"},
|
||||
},
|
||||
{
|
||||
"a": []string{"banana", "cherry", "date", "fig"},
|
||||
"b": []string{"apple", "banana", "cherry"},
|
||||
"expectedResult": []string{"date", "fig"},
|
||||
},
|
||||
{
|
||||
"a": []string{"apple", "banana", "cherry"},
|
||||
"b": []string{"apple", "banana", "cherry"},
|
||||
"expectedResult": []string{},
|
||||
},
|
||||
{
|
||||
"a": []string{},
|
||||
"b": []string{"apple", "banana", "cherry"},
|
||||
"expectedResult": []string{},
|
||||
},
|
||||
{
|
||||
"a": []string{"apple", "banana", "cherry"},
|
||||
"b": []string{},
|
||||
"expectedResult": []string{"apple", "banana", "cherry"},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range data {
|
||||
result := GetUniqueElementsOfStringSlices(test["a"], test["b"])
|
||||
if !reflect.DeepEqual(result, test["expectedResult"]) {
|
||||
if len(result) == 0 && len(test["expectedResult"]) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
t.Errorf("\ngot: %q\nwanted: %q\nfor: %q", result, test["expectedResult"], test)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user