[v1.5.7] 参数归一化

This commit is contained in:
兔子
2025-01-14 17:36:28 +08:00
parent d4cf906264
commit b1c83f4c00
2 changed files with 64 additions and 2 deletions

View File

@@ -32,7 +32,7 @@ func ArrayRemove(array []string, args ...string) []string {
}
// ArrayUnique - 数组去重
func ArrayUnique[T any](array []T) (slice []any) {
func ArrayUnique[T any](array []T) (slice []T) {
list := make(map[any]bool)
for _, item := range array {
if !list[item] {
@@ -44,7 +44,7 @@ func ArrayUnique[T any](array []T) (slice []any) {
}
// ArrayEmpty - 数组去空
func ArrayEmpty[T any](array []T) (slice []any) {
func ArrayEmpty[T any](array []T) (slice []T) {
for _, item := range array {
if !Is.Empty(item) {
slice = append(slice, item)

View File

@@ -77,3 +77,65 @@ func (this *UnityClass) Keys(param any, reg ...any) (keys []any) {
return keys
}
// Int 参数归一化
func (this *UnityClass) Int(value ...any) (array []int) {
fn := func(value any) (resp []int) {
types := []string{"string", "int", "int64", "float", "float64"}
if InArray(Get.Type(value), types) {
// 正则提取数字部分包含0
item := regexp.MustCompile(`-?\d+`).FindAllString(cast.ToString(value), -1)
for _, val := range item {
resp = append(resp, cast.ToInt(val))
}
}
if Get.Type(value) == "slice" {
item := cast.ToStringSlice(value)
for _, val := range item {
resp = append(resp, cast.ToInt(val))
}
}
return resp
}
for _, val := range value {
array = append(array, fn(val)...)
}
return ArrayUnique(array)
}
// Float 参数归一化
func (this *UnityClass) Float(value ...any) (array []float64) {
fn := func(value any) (resp []float64) {
types := []string{"string", "int", "int64", "float", "float64"}
if InArray(Get.Type(value), types) {
// 正则提取数字部分包含正数负数0和小数
item := regexp.MustCompile(`-?\d+(\.\d+)?`).FindAllString(cast.ToString(value), -1)
for _, val := range item {
resp = append(resp, cast.ToFloat64(val))
}
}
if Get.Type(value) == "slice" {
item := cast.ToStringSlice(value)
for _, val := range item {
resp = append(resp, cast.ToFloat64(val))
}
}
return resp
}
for _, val := range value {
array = append(array, fn(val)...)
}
return ArrayUnique(array)
}