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
func IsNil[BaseType op_type.BaseType](arr Array[BaseType]) bool {
return arr.value == nil
func (a *Array[Bt]) IsNil() bool {
return a.value == nil
}
// ToStringSlice ...
func ToStringSlice[BaseType op_type.BaseType](arr Array[BaseType]) []string {
func (a *Array[Bt]) ToStringSlice() []string {
list := make([]string, 0)
for _, item := range arr.value {
for _, item := range a.value {
str := op_any.AnyDataType(item).ToString()
list = append(list, str)
}
@ -49,8 +49,8 @@ func ToStringSlice[BaseType op_type.BaseType](arr Array[BaseType]) []string {
}
// Unique 对数据结果进行去重
func Unique[BaseType op_type.BaseType](arr Array[BaseType]) []BaseType {
result := make([]BaseType, 0)
func (a *Array[Bt]) Unique(arr Array[Bt]) []Bt {
result := make([]Bt, 0)
dataTable := make(map[string]bool)
for _, item := range arr.value {
@ -70,7 +70,7 @@ func Unique[BaseType op_type.BaseType](arr Array[BaseType]) []BaseType {
}
// 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++ {
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 ...
func ToString[BaseType op_type.BaseType](arr Array[BaseType]) define.BaseValueResult[string] {
if IsNil(arr) {
func (a *Array[Bt]) ToString() define.BaseValueResult[string] {
if a.IsNil() {
return define.BaseValueResult[string]{
Value: "",
Err: nil,
}
}
byteData, err := json.Marshal(arr.value)
byteData, err := json.Marshal(a.value)
return define.BaseValueResult[string]{
Value: string(byteData),
Err: err,
@ -102,25 +102,25 @@ func ToString[BaseType op_type.BaseType](arr Array[BaseType]) define.BaseValueRe
}
// ToStringWithSplit 数组按照指定分隔符转为字符串
func ToStringWithSplit[BaseType op_type.BaseType](arr Array[BaseType], split string) define.BaseValueResult[string] {
if IsNil(arr) {
func (a *Array[Bt]) ToStringWithSplit(arr Array[Bt], split string) define.BaseValueResult[string] {
if a.IsNil() {
return define.BaseValueResult[string]{
Value: "",
Err: nil,
}
}
return define.BaseValueResult[string]{
Value: strings.Join(ToStringSlice(arr), split),
Value: strings.Join(a.ToStringSlice(), split),
Err: nil,
}
}
// ExtraField 提取[]map/[]struct 中的指定字段, 并以list形式返回
func ExtraField[BaseType op_type.BaseType](arr Array[BaseType], fieldName string) string {
if IsNil(arr) {
func (a *Array[Bt]) ExtraField(fieldName string) string {
if a.IsNil() {
return "[]"
}
byteData, _ := json.Marshal(arr.value)
byteData, _ := json.Marshal(a.value)
res := make([]any, 0)
list := gjson.ParseBytes(byteData).Array()
for _, item := range list {
@ -129,5 +129,5 @@ func ExtraField[BaseType op_type.BaseType](arr Array[BaseType], fieldName string
res = append(res, itemValue.Value())
}
}
return ToString(arr).Value
return a.ToString().Value
}