diff --git a/utils/array.go b/utils/array.go index 4829351..49b6491 100644 --- a/utils/array.go +++ b/utils/array.go @@ -2,37 +2,61 @@ package utils import "strings" -func In(target string, array []string) bool { - target = strings.Trim(target, "") +// ArrayInString 判断字符串是否存在于字符串切片中 +// target: 待匹配的目标字符串 +// array: 需要查找的字符串切片 +func ArrayInString(target string, array []string) bool { + target = strings.TrimSpace(target) for _, v := range array { - if strings.Trim(v, "") == target { + if strings.TrimSpace(v) == target { return true } } return false } -// 字符串数组是否存在 -func StrArrayIndex(items []string, item string) int { - for i, eachItem := range items { - if eachItem == item { - return i +// ArrayInInt 判断整数是否存在于整型切片中 +// target: 待匹配的目标整数 +// array: 需要查找的整型切片 +func ArrayInInt(target int, array []int) bool { + for _, v := range array { + if v == target { + return true } } - return -1 + return false } -func RemoveRepeatSlice(in []string) (out []string) { - _map := make(map[string]bool) - for i := 0; i < len(in); i++ { - if in[i] != "" { - _map[in[i]] = true +// ArrayRemoveRepeatString 去除字符串切片中的重复元素(保持原有顺序) +// in: 原始字符串切片 +// 返回: 去重后的字符串切片 +func ArrayRemoveRepeatString(in []string) (out []string) { + seen := make(map[string]struct{}) + for _, v := range in { + trimmed := strings.TrimSpace(v) + if trimmed == "" { + continue } + if _, ok := seen[trimmed]; ok { + continue + } + seen[trimmed] = struct{}{} + out = append(out, trimmed) + } + return out +} + +// ArrayRemoveRepeatInt 去除整型切片中的重复元素(保持原有顺序) +// in: 原始整型切片 +// 返回: 去重后的整型切片 +func ArrayRemoveRepeatInt(in []int) (out []int) { + seen := make(map[int]struct{}) + for _, v := range in { + if _, ok := seen[v]; ok { + continue + } + seen[v] = struct{}{} + out = append(out, v) } - - for key, _ := range _map { - out = append(out, key) - } - return out }