产品经理:书接上回,时间轴功能是实现了,很好👍
哪里哪里,都是同行的衬托 :小猿
产品经理:但是,时间轴展示的事件太杂了,需要加一下过滤
产品经理:别把自己上班期间的吃喝玩乐的, 都展示出来
OK,我一定严于律己,隐藏实力,不暴漏,争做优秀员工:小猿 产品经理:哦,对了,忘了告诉你了。
产品经理:老板着重强调了,经济下行,公司上下同命运,工作要积极
---------- :小猿
宗旨:满足产品经理的一切不切实际的幻想
上干货,别啰嗦。
对示例数据中,show字段进行判断,如果show=2,则剔除
方法一:
- resp := make([]*Data, 0)
- for _, v := range data {
- if v.Show == IsShow {
- resp = append(resp, v)
- }
- }
步骤详解:
优点:
缺点:
方法二:
- // 有效需保留的下标
- i := 0
- for _, v := range data {
- if v.Show != IsShow {
- continue
- }
- // 数据重写
- data[i] = v
- // 有效下标自增
- i++
- }
-
- // 对重写后的数据slice,进行截取
- data = data[:i]
步骤详解:
优点:
缺点:
完整示例:
- package main
-
- import (
- "encoding/json"
- "fmt"
- "sort"
- )
-
- type Data struct {
- Id int32 `json:"id"`
- Username string `json:"username"`
- Event string `json:"event"`
- Show int32 `json:"show"`
- Datetime string `json:"datetime"`
- Timestamp int64 `json:"timestamp"`
- }
-
- const (
- IsShow = 1
- UnShow = 2
- )
-
- func main() {
-
-
- // 我的一天
- data := SortData()
-
- // 示例一
-
- // 有效需保留的下标
- i := 0
- for _, v := range data {
- if v.Show != IsShow {
- continue
- }
- // 元素数据,重写
- data[i] = v
- // 有效下标自增
- i++
- }
-
- // 对重写后的数据slice,进行截取
- data = data[:i]
-
- // 输出
- s, _ := json.Marshal(data)
- fmt.Printf(string(s))
- }
-
- func SortData() (resp []*Data) {
- myDay := make([]*Data, 0, 6)
- myDay = append(myDay, GetGirlfriend()...)
- myDay = append(myDay, GetLife()...)
-
- // 时间 slice
- timestamp := make([]int, 0)
- // data map
- dataMap := make(map[int64]*Data)
- for _, v := range myDay {
- timestamp = append(timestamp, int(v.Timestamp))
-
- dataMap[v.Timestamp] = v
- }
-
- // 排序(正序)
- sort.Ints(timestamp)
-
- // 格式化数据
- resp = make([]*Data, 0, 6)
- for _, value := range timestamp {
- if info, ok := dataMap[int64(value)]; ok {
- resp = append(resp, info)
- }
- }
-
- return resp
- }
-
- // GetGirlfriend 生活
- func GetGirlfriend() (resp []*Data) {
- resp = make([]*Data, 3)
- resp = []*Data{
- {
- Id: 1,
- Username: "如花",
- Event: "摸鱼-约逛街",
- Show: UnShow,
- Datetime: "2022-11-09 14:00",
- Timestamp: 1667973600000,
- },
- {
- Id: 2,
- Username: "如花",
- Event: "吃火锅",
- Show: UnShow,
- Datetime: "2022-11-09 18:30",
- Timestamp: 1667989800000,
- },
- {
- Id: 3,
- Username: "如花",
- Event: "看电影",
- Show: IsShow,
- Datetime: "2022-11-09 20:30",
- Timestamp: 1667997000000,
- },
- }
-
- return
- }
-
- // GetLife 活着
- func GetLife() (resp []*Data) {
- resp = make([]*Data, 3)
- resp = []*Data{
- {
- Id: 1,
- Username: "仙儿",
- Event: "沟通需求v1.0",
- Show: IsShow,
- Datetime: "2022-11-09 14:30",
- Timestamp: 1667975400000,
- },
- {
- Id: 2,
- Username: "仙儿",
- Event: "讨论技术方案",
- Show: IsShow,
- Datetime: "2022-11-09 16:00",
- Timestamp: 1667980800000,
- },
- {
- Id: 3,
- Username: "仙儿",
- Event: "写PPT",
- Show: IsShow,
- Datetime: "2022-11-09 17:30",
- Timestamp: 1667986200000,
- },
- }
-
- return
- }
打印结果:
我为人人,人人为我,美美与共,天下大同。