feat: 升级op_array
This commit is contained in:
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user