|
|
@ -205,19 +205,23 @@ func HttpBuildStringQuery(data map[string]string) string { |
|
|
|
|
|
|
|
/** |
|
|
|
* 对map切片 按值进行顺序 |
|
|
|
* @param order desc/asc MapDate []map[string]interface{} |
|
|
|
* @param order desc/asc val_type float64/string MapDate []map[string]interface{} |
|
|
|
* @2022/10/27 |
|
|
|
* @lo |
|
|
|
*/ |
|
|
|
func MapSort(order, val string, MapDate []map[string]interface{}) ([]map[string]interface{}, error) { |
|
|
|
func MapSort(order, val, val_type string, MapDate []map[string]interface{}) ([]map[string]interface{}, error) { |
|
|
|
type KVPair struct { |
|
|
|
Key int |
|
|
|
Val string |
|
|
|
Key int |
|
|
|
Val_float64 float64 |
|
|
|
val_string string |
|
|
|
} |
|
|
|
res := []map[string]interface{}{} |
|
|
|
if order != "desc" && order != "asc" { |
|
|
|
return res, errors.New("order parameter err") |
|
|
|
} |
|
|
|
if val_type != "float64" && val_type != "string" { |
|
|
|
return res, errors.New("val_type parameter err") |
|
|
|
} |
|
|
|
if val == "" { |
|
|
|
return res, errors.New("val parameter err") |
|
|
|
} |
|
|
@ -225,17 +229,33 @@ func MapSort(order, val string, MapDate []map[string]interface{}) ([]map[string] |
|
|
|
return res, errors.New("MapDate parameter err") |
|
|
|
} |
|
|
|
tmpList := []KVPair{} |
|
|
|
for k, item := range MapDate { |
|
|
|
tmpList = append(tmpList, KVPair{Key: k, Val: ToStr(item[val])}) |
|
|
|
} |
|
|
|
if order == "desc" { |
|
|
|
sort.Slice(tmpList, func(i, j int) bool { |
|
|
|
return tmpList[i].Val > tmpList[j].Val // 降序
|
|
|
|
}) |
|
|
|
if val_type == "string" { |
|
|
|
for k, item := range MapDate { |
|
|
|
tmpList = append(tmpList, KVPair{Key: k, val_string: ToStr(item[val])}) |
|
|
|
} |
|
|
|
if order == "desc" { |
|
|
|
sort.Slice(tmpList, func(i, j int) bool { |
|
|
|
return tmpList[i].val_string > tmpList[j].val_string // 降序
|
|
|
|
}) |
|
|
|
} else { |
|
|
|
sort.Slice(tmpList, func(i, j int) bool { |
|
|
|
return tmpList[i].val_string < tmpList[j].val_string // 升序
|
|
|
|
}) |
|
|
|
} |
|
|
|
} else { |
|
|
|
sort.Slice(tmpList, func(i, j int) bool { |
|
|
|
return tmpList[i].Val < tmpList[j].Val // 升序
|
|
|
|
}) |
|
|
|
for k, item := range MapDate { |
|
|
|
float64_val, _ := ToFloat64(item[val]) |
|
|
|
tmpList = append(tmpList, KVPair{Key: k, Val_float64: float64_val}) |
|
|
|
} |
|
|
|
if order == "desc" { |
|
|
|
sort.Slice(tmpList, func(i, j int) bool { |
|
|
|
return tmpList[i].Val_float64 > tmpList[j].Val_float64 // 降序
|
|
|
|
}) |
|
|
|
} else { |
|
|
|
sort.Slice(tmpList, func(i, j int) bool { |
|
|
|
return tmpList[i].Val_float64 < tmpList[j].Val_float64 // 升序
|
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
for _, tmp := range tmpList { |
|
|
|
res = append(res, MapDate[tmp.Key]) |
|
|
|