diff --git a/slice/contains.go b/slice/contains.go index 085e8a9..63288f2 100644 --- a/slice/contains.go +++ b/slice/contains.go @@ -35,3 +35,14 @@ func ContainsString(sl []string, v string) bool { } return false } + + +func ContainsSlice(smallSlice, bigSlice []string) bool { + for i := 0; i < len(smallSlice); i++ { + if !ContainsString(smallSlice[i], bigSlice) { + return false + } + } + + return true +} diff --git a/slice/unique.go b/slice/unique.go index 28a5d33..444ba07 100644 --- a/slice/unique.go +++ b/slice/unique.go @@ -1,5 +1,7 @@ package slice +import "strings" + func UniqueInt64(s []int64) []int64 { size := len(s) if size == 0 { @@ -68,3 +70,30 @@ func UniqueString(s []string) []string { return ret } + +func UniqueTrimString(s []string) []string { + size := len(s) + if size == 0 { + return []string{} + } + + m := make(map[string]struct{}) + for i := 0; i < size; i++ { + item := strings.TrimSpace(s[i]) + if item == "" { + continue + } + m[item] = struct{}{} + } + + realLen := len(m) + ret := make([]string, realLen) + + idx := 0 + for key := range m { + ret[idx] = key + idx++ + } + + return ret +}