golang []map[string][string] , 先按大小,再按键名排序



type IpSortItem struct {
	Value int    `json:"value"`
	Name  string `json:"name"`
}
// 
先按数量排序,再按名称排序
func sortIPView(rspData []map[string]string) []*IpSortItem {

	var totalList []int
	dataList := make(map[int][]string)

	for _, value := range rspData {
		for key2, value2 := range value {
			num, err := strconv.Atoi(value2)
			if err != nil {
				logUtil.Errorf("返回的格式错误%s:%s", key2, value2)
			}
			_, ok := dataList[num]
			if ok == false {
				dataList[num] = []string{}
			}
			dataList[num] = append(dataList[num], key2)

			if MatchInArrayInt(num, totalList) == false {
				totalList = append(totalList, num)
			}
		}
	}

	sort.Sort(sort.Reverse(sort.IntSlice(totalList)))
	var data []*IpSortItem
	for _, value := range totalList {
		value2, ok := dataList[value]
		if ok == false {
			continue
		}
		sort.Strings(value2)
		for _, value3 := range value2 {
			item := new(IpSortItem)
			item.Name = value3
			item.Value = value
			data = append(data, item)
		}
	}
	return data
}

// MatchInArray returns true if the given string value is in the array.
func MatchInArrayInt(value int, arr []int) bool {
	for _, v := range arr {
		if v == value {
			return true
		}
	}
	return false
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值