Golang map数组按字段分类

简介: Golang map数组按字段分类

Go 类二维数组按字段分类/map数组按字段分类

原始数据


数据相应结构体

type IgmsMenu struct {
  ID          uint             `gorm:"column:id;" json:"id"`
  CategoryId  int64            `gorm:"column:category_id;" json:"category_id"`
  Name        string           `gorm:"column:name;" json:"name"`
  Price       *decimal.Decimal `gorm:"column:price;type:decimal" json:"price"`
  Remark      string           `gorm:"column:remark;" json:"remark"`
  Status      int8             `gorm:"column:status;default:0;" json:"status"`
}

原始数据返回的json数据如下:

15050284c8e04be582eafcd6510a3bb1.png

数据处理


需求


需要根据数据中的category_id来做数组分类。

原理


category_id的数据类型为int64,所以需要定义一个类型为map[int64][]map[string]interface{}的来承接处理后的数据。

  • map[int64]:这层用来承接分类后的各类数组集
  • []map[string]interface{}:单个类的数据数组

代码


func LauwenDeal(infos []model.IgmsMenu) map[int64][]map[string]interface{} {
  res := make(map[int64][]map[string]interface{})
  for _, item := range infos {
    temp := map[string]interface{}{
      "id":     item.ID,
      "name":   item.Name,
      "price":  item.Price,
      "remark": item.Remark,
    }
    res[0] = append(res[0], temp)
    res[item.CategoryId] = append(res[item.CategoryId], temp)
  }
  return res
}

处理结果


处理后返回的json数据

0d30c2bd32804afe898480c860bf34a1.png

目录
相关文章
|
3月前
|
索引
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
|
2月前
|
前端开发 JavaScript 索引
JavaScript 数组常用高阶函数总结,包括插入,删除,更新,反转,排序等,如map、splice等
JavaScript数组的常用高阶函数,包括遍历、插入、删除、更新、反转和排序等操作,如map、splice、push、pop、reverse等。
20 0
|
3月前
|
Go
Golang语言之映射(map)快速入门篇
这篇文章是关于Go语言中映射(map)的快速入门教程,涵盖了map的定义、创建方式、基本操作如增删改查、遍历、嵌套map的使用以及相关练习题。
42 5
|
3月前
|
Go
Golang语言之数组(array)快速入门篇
这篇文章是关于Go语言中数组的详细教程,包括数组的定义、遍历、注意事项、多维数组的使用以及相关练习题。
43 5
|
3月前
|
Go
Golang语言数据类型分类及进制转换案例
这篇文章详细介绍了Go语言中数据类型的分类、进制转换的概念和实例,以及数字字面量语法,还涉及了原码、反码和补码的相关知识。
24 0
Golang语言数据类型分类及进制转换案例
|
3月前
数组方法中的`forEach()`方法和`map()`方法有什么区别?
数组方法中的`forEach()`方法和`map()`方法有什么区别?
|
3月前
|
JavaScript 前端开发
JavaScript 中 五种迭代数组的方法 every some map filter forEach
本文介绍了JavaScript中五种常用数组迭代方法:every、some、filter、map和forEach,并通过示例代码展示了它们的基本用法和区别。
|
4月前
|
JavaScript 前端开发 索引
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
这段代码和说明介绍了JavaScript中数组的一些常用方法。函数接收三个参数:`item`(数组项的值)、`index`(项的位置,可选)和`array`(数组本身,可选)。示例展示了如何使用`filter()`过滤非空项、`forEach()`遍历数组、`map()`处理并返回新数组、`every()`检查所有元素是否满足条件、`some()`检查是否存在满足条件的元素、`find()`获取首个符合条件的元素值以及`findIndex()`获取其索引位置。这些方法都不会修改原数组。
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
|
4月前
|
监控 Serverless Go
Golang 开发函数计算问题之Go 语言中切片扩容时需要拷贝原数组中的数据如何解决
Golang 开发函数计算问题之Go 语言中切片扩容时需要拷贝原数组中的数据如何解决
|
4月前
|
Java Serverless Go
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决