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