feat: 升级op_array

This commit is contained in:
2025-10-13 23:12:06 +08:00
parent d57d32b103
commit 97afbebbe0

View File

@ -34,14 +34,14 @@ type Array[Bt op_type.BaseType] struct {
} }
// IsNil 输入是否为nil // IsNil 输入是否为nil
func IsNil[BaseType op_type.BaseType](arr Array[BaseType]) bool { func (a *Array[Bt]) IsNil() bool {
return arr.value == nil return a.value == nil
} }
// ToStringSlice ... // ToStringSlice ...
func ToStringSlice[BaseType op_type.BaseType](arr Array[BaseType]) []string { func (a *Array[Bt]) ToStringSlice() []string {
list := make([]string, 0) list := make([]string, 0)
for _, item := range arr.value { for _, item := range a.value {
str := op_any.AnyDataType(item).ToString() str := op_any.AnyDataType(item).ToString()
list = append(list, str) list = append(list, str)
} }
@ -49,8 +49,8 @@ func ToStringSlice[BaseType op_type.BaseType](arr Array[BaseType]) []string {
} }
// Unique 对数据结果进行去重 // Unique 对数据结果进行去重
func Unique[BaseType op_type.BaseType](arr Array[BaseType]) []BaseType { func (a *Array[Bt]) Unique(arr Array[Bt]) []Bt {
result := make([]BaseType, 0) result := make([]Bt, 0)
dataTable := make(map[string]bool) dataTable := make(map[string]bool)
for _, item := range arr.value { for _, item := range arr.value {
@ -70,7 +70,7 @@ func Unique[BaseType op_type.BaseType](arr Array[BaseType]) []BaseType {
} }
// Has 查询一个值是否在列表里, 在的话, 返回首次出现的索引, 不在返回-1 // Has 查询一个值是否在列表里, 在的话, 返回首次出现的索引, 不在返回-1
func Has[BaseType op_type.BaseType](arr Array[BaseType], input BaseType) int { func (a *Array[Bt]) Has(arr Array[Bt], input Bt) int {
for idx := 0; idx < len(arr.value); idx++ { for idx := 0; idx < len(arr.value); idx++ {
if reflect.TypeOf(arr.value[idx]).String() != reflect.TypeOf(input).String() { if reflect.TypeOf(arr.value[idx]).String() != reflect.TypeOf(input).String() {
// 类型不同 // 类型不同
@ -87,14 +87,14 @@ func Has[BaseType op_type.BaseType](arr Array[BaseType], input BaseType) int {
} }
// ToString ... // ToString ...
func ToString[BaseType op_type.BaseType](arr Array[BaseType]) define.BaseValueResult[string] { func (a *Array[Bt]) ToString() define.BaseValueResult[string] {
if IsNil(arr) { if a.IsNil() {
return define.BaseValueResult[string]{ return define.BaseValueResult[string]{
Value: "", Value: "",
Err: nil, Err: nil,
} }
} }
byteData, err := json.Marshal(arr.value) byteData, err := json.Marshal(a.value)
return define.BaseValueResult[string]{ return define.BaseValueResult[string]{
Value: string(byteData), Value: string(byteData),
Err: err, Err: err,
@ -102,25 +102,25 @@ func ToString[BaseType op_type.BaseType](arr Array[BaseType]) define.BaseValueRe
} }
// ToStringWithSplit 数组按照指定分隔符转为字符串 // ToStringWithSplit 数组按照指定分隔符转为字符串
func ToStringWithSplit[BaseType op_type.BaseType](arr Array[BaseType], split string) define.BaseValueResult[string] { func (a *Array[Bt]) ToStringWithSplit(arr Array[Bt], split string) define.BaseValueResult[string] {
if IsNil(arr) { if a.IsNil() {
return define.BaseValueResult[string]{ return define.BaseValueResult[string]{
Value: "", Value: "",
Err: nil, Err: nil,
} }
} }
return define.BaseValueResult[string]{ return define.BaseValueResult[string]{
Value: strings.Join(ToStringSlice(arr), split), Value: strings.Join(a.ToStringSlice(), split),
Err: nil, Err: nil,
} }
} }
// ExtraField 提取[]map/[]struct 中的指定字段, 并以list形式返回 // ExtraField 提取[]map/[]struct 中的指定字段, 并以list形式返回
func ExtraField[BaseType op_type.BaseType](arr Array[BaseType], fieldName string) string { func (a *Array[Bt]) ExtraField(fieldName string) string {
if IsNil(arr) { if a.IsNil() {
return "[]" return "[]"
} }
byteData, _ := json.Marshal(arr.value) byteData, _ := json.Marshal(a.value)
res := make([]any, 0) res := make([]any, 0)
list := gjson.ParseBytes(byteData).Array() list := gjson.ParseBytes(byteData).Array()
for _, item := range list { for _, item := range list {
@ -129,5 +129,5 @@ func ExtraField[BaseType op_type.BaseType](arr Array[BaseType], fieldName string
res = append(res, itemValue.Value()) res = append(res, itemValue.Value())
} }
} }
return ToString(arr).Value return a.ToString().Value
} }