40 lines
968 B
Go
40 lines
968 B
Go
// Package op_array ...
|
|
//
|
|
// Description : op_array ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2025-11-25 11:30
|
|
package op_array
|
|
|
|
// ToMap 数组转map
|
|
func ToMap[Key comparable, Value any](dataList []Value, keyFormat func(item Value) Key) map[Key]Value {
|
|
res := make(map[Key]Value)
|
|
for _, item := range dataList {
|
|
key := keyFormat(item)
|
|
res[key] = item
|
|
}
|
|
return res
|
|
}
|
|
|
|
// ExtractField 提取数组指定字段, 并构建成一个新的数组
|
|
func ExtractField[FieldValue any, Value any](dataList []Value, fieldValue func(item Value) FieldValue) []FieldValue {
|
|
res := make([]FieldValue, 0)
|
|
for _, item := range dataList {
|
|
v := fieldValue(item)
|
|
res = append(res, v)
|
|
}
|
|
return res
|
|
}
|
|
|
|
// Filter 过滤列表数据
|
|
func Filter[Value any](dataList []Value, filterValue func(item Value) bool) []Value {
|
|
res := make([]Value, 0)
|
|
for _, item := range dataList {
|
|
if filterValue(item) {
|
|
res = append(res, item)
|
|
}
|
|
}
|
|
return res
|
|
}
|