in pkg/utils/functional/functional.go [51:76]
func IntersectStringSlice(slices ...[]string) []string {
if len(slices) == 0 {
return nil
}
if len(slices) == 1 {
return UniqueStrings(slices[0])
}
if slices[0] == nil {
return IntersectStringSlice(slices[1:]...)
}
if slices[1] == nil {
sliced := append(slices[:1], slices[2:]...)
return IntersectStringSlice(sliced...)
}
counts := map[string]bool{}
for _, s := range slices[0] {
counts[s] = true
}
intersection := []string{}
for _, s := range slices[1] {
if _, ok := counts[s]; ok {
intersection = append(intersection, s)
}
}
return IntersectStringSlice(append(slices[2:], intersection)...)
}