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