70 lines
1.3 KiB
Go
70 lines
1.3 KiB
Go
// Package utils -----------------------------
|
|
// @file : arrary.go
|
|
// @author : JJXu
|
|
// @contact : wavingbear@163.com
|
|
// @time : 2023/9/7 16:51
|
|
// -------------------------------------------
|
|
package utils
|
|
|
|
// 数组去重
|
|
func ArrayDeduplicate[T int | int64 | string | int32 | bool](arr []T) []T {
|
|
var subs []T
|
|
for _, v := range arr {
|
|
if len(subs) == 0 {
|
|
subs = append(subs, v)
|
|
} else {
|
|
var exist bool
|
|
for _, s := range subs {
|
|
if s == v {
|
|
exist = true
|
|
break
|
|
}
|
|
}
|
|
if !exist {
|
|
subs = append(subs, v)
|
|
}
|
|
}
|
|
}
|
|
return subs
|
|
}
|
|
|
|
// Intersection 数组取交集
|
|
func Intersection(slice1 []string, slice2 []string) []string {
|
|
m := make(map[string]bool)
|
|
for _, item := range slice1 {
|
|
m[item] = true
|
|
}
|
|
|
|
var result []string
|
|
for _, item := range slice2 {
|
|
if _, ok := m[item]; ok {
|
|
result = append(result, item)
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
func DifferentFrom(origin []string, needRemove []string) []string {
|
|
var newList = []string{}
|
|
if len(origin) == 0 {
|
|
return newList
|
|
}
|
|
if len(needRemove) == 0 {
|
|
return origin
|
|
}
|
|
for _, item := range origin {
|
|
var remove bool
|
|
for _, removeItem := range needRemove {
|
|
if item == removeItem {
|
|
remove = true
|
|
break
|
|
}
|
|
}
|
|
if !remove {
|
|
newList = append(newList, item)
|
|
}
|
|
}
|
|
|
|
return newList
|
|
}
|