fonchain-fiee/pkg/utils/arrary.go
2025-02-19 14:24:15 +08:00

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
}