小程序开发笔记(八)—Js数组按日期分组显示数据
数据分组展示有两种方式,一种是后端直接传入分组格式的Json数据,另一种是我们在前端自己转换格式,这里我们在前端处理转换按日期分组的数据格式
1、例如后端返回数据格式为:
[{createtime:'2019-07-29',content:'哈哈哈'},{createtime:'2019-07-29',content:'哈哈哈'}]
2、页面展示需要的格式为:
[{createtime:'2019-07-29',list:[{createtime:'2019-07-29',content:'哈哈哈'},{createtime:'2019-07-29',content:'哈哈哈'}]}]
3、下面我们使用Js处理成按日期分组归类的数据,代码如下:
let newArr = [];
        _list.forEach((item,i)=>{
          let index = -1;
          let isExists = newArr.some((newItem,j)=>{
            if(item.createtime==newItem.createtime){
              index = j;
              return true;
            }
          })
          if(!isExists){
            newArr.push({
              createtime:item.createtime,
              timeDay:item.timeDay,
              timeMonth:item.timeMonth,
              subList:[item]
            })
          }else{
            newArr[index].subList.push(item);
          }
    })
4、处理后的结果:
[
    {
        "createtime":"2019-07-27",
        "timeDay":27,
        "timeMonth":7,
        "subList":[
            {
                "group_post_id":128,
                "group_id":0,
                "group_topic_id":"",
                "uid":73,
                "nickname":"阿健w ",
                "avatar_url":"https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKicUgL8bc6EDmPcST3ozT00OZTpmJSrpcFaB3Fjfp5b4PWNxEraKu1wviaIicxVcRzxOE7FfLRYFOTg/132",
                "content":"哈哈哈",
                "longitude":116.340988,
                "latitude":40.006805,
                "province":"",
                "city":"",
                "location":"",
                "address":"",
                "like_count":0,
                "comment_count":0,
                "status":"0",
                "createtime":"2019-07-27",
                "pics":[
                ],
                "timeDay":27,
                "timeMonth":7
            }
        ]
    }]
问题:
以上这种方式处理在正常情况下是没有问题的,但通常我们在分组显示的时候会存在分页的问题,可以看到下图出现了两个相同的日期,是因为同一天的分组数据不能一页展示完,可能会在第二页或者第三页出现的情况

解决:
方式1:
参考我之前的一个做法https://www.cnblogs.com/fozero/p/7599785.html
if(pageNum==1){
          this.list = newArr;
        }else{
          // 解决分组分页问题
          // 遍历newArr  与上页最后一条记录日期比较,相同日期则直接追加
          for(let i in newArr){
            if(newArr[i].createtime==this.list[this.list.length-1].createtime){
              this.list[this.list.length-1].subList = this.list[this.list.length-1].subList.concat(newArr[i].subList);
            }else{
              this.list.push(newArr[i]);//数组追加
            }
          }
        }
方式2:
参考使用后端mysql分组查询并按照分组条数来进行分页
https://www.cnblogs.com/jackyfee/archive/2011/05/07/GroupPage.html
https://blog.csdn.net/zhang197093/article/details/49425261
小程序开发笔记(八)—Js数组按日期分组显示数据的更多相关文章
- 小程序开发笔记【二】,抽奖结果json数据拼装bug解决
		抽奖结果数据json格式数据拼接bug,如下图,只发布了两个奖项,每个奖项设置2个奖品,但最后拼接数据的时候出现3个奖项 json数据格式如下 "luckyResult":[ { ... 
- 微信小程序开发笔记02
		今天学习了微信小程序开发用到的语言,wxml与wxss语言基本语法与html和css基本语法相似,学习起来相对简单.在小程序主要的语言是js(javascript,跟准确的说是jqery) ,由于这种 ... 
- 微信小程序开发笔记01
		微信小程序开发的优势 1,不用安装,即开即用,用完就走.省流量,省安装时间,不占用桌面: 2,体验上虽然没法完全媲美原生APP,但综合考虑还是更优: 3,对于小程序拥有者来说,开发成本更低,他们可以更 ... 
- 微信小程序开发笔记(一)
		一.为什么要学习微信小程序开发 微信小程序是一个可以在微信上打开的轻应用,他是由多个页面组成的程序,跟传统APP比较如下: 优点 1.不需要在应用商店下载,不占用内存空间,即开即用 2.可以在微信内直 ... 
- 微信小程序开发笔记
		前言: 因为前段时间一直在做关于微信小程序方面的项目,作为一名后端的攻城狮而言做一些简单的前端页面数据操作和管理还是比较容易快上手的,当然前提是要理解微信小程序的基本语法和请求原理.该篇博客主要记录的 ... 
- 微信小程序开发笔记(二)
		一.前言 继承上一篇所说的,有了对微信小程序的基础概念后,这边将会示范动手做一个小程序,在动手的过程中我们可以更快的熟悉小程序里面的架构和开发流程. 二.小程序的设计 这次要做的是一个猜数字的程序,程 ... 
- 微信小程序开发笔记04
		今天将小程序的页面进行优化 消除昨天遇到的bug问题. 完成了微信小程序的开发. 
- 微信小程序开发笔记03
		今天基本实现了微信小程序主要功能,页面还没有进行优化,有些功能还需完善. 页面之间的信息转化部分还未实现. 
- 微信小程序开发之拼接json数组字符串
		直接上代码 : var imageitem; var imageitemstring=''; for(var i=0;i< that.data.fbimages.length;i ... 
随机推荐
- Redis for OPS 06:Redis Cluster 集群
			写在前面的话 前面的主从,HA 都只是解决我们数据安全性方面的问题,并没有解决我们业务瓶颈的问题.当业务并发到达一定瓶颈的时候,我们需要对服务进行横向扩展,而不是纵向扩展.这就需要引入另外一个东西,R ... 
- WPF  启动页面 (原发布 csdn 2017-06-26 19:26:01)
			如果我写的有误,请及时与我联系,我立即改之以免继续误导他/她人. 如果您有好的想法或者建议,请随时与我联系. wpf软件启动时,加载启动页面.软件初始化完成之后关闭页面. App.xaml.cs代码 ... 
- 计时 答题 demo
			<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ... 
- django1-web开发基础知识
			1.http概述 当前版本:1.1 http协议是一个客户端和服务端请求应答的标准TCP,如浏览器作为客户端发送请求到服务器指定端口 ,服务器将内容返回给服务器 2.协议格式 http定义了客户端与服 ... 
- vi 上下左右变ABCD乱码解决方法
			CentOS echo "set nocompatible" >> ~/.vimrc source ~/.vimrc debian sudo apt-get remov ... 
- 交互式shell脚本web console
			官网:http://web-console.org/ 这个脚本可以实现web下交互,也就是有了这玩意后可以不用反弹shell了. <?php // Web Console v0.9.7 (201 ... 
- 重新认识快速视图窗体(Quick View Form)
			关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复158或者20151009可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 在我的 微软Dynamics C ... 
- VS2019专业版和企业版激活密钥
			Visual Studio 2019 Professional NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y Visual Studio 2019 EnterpriseBF8Y8-GN2 ... 
- vue 组件之纯表格渲染--没有事件交互
			组件 名称小写==> 用-链接 02===> 属性==> empty-text="暂无数据" 当表格中没有数据 就会显示 暂无数据 <el-table-co ... 
- HashMap底层实现及原理
			注意:文章的内容基于JDK1.7进行分析.1.8做的改动文章末尾进行讲解. 一.先来熟悉一下我们常用的HashMap: 1.HashSet和HashMap概述 对于HashSst及其子类而 ... 
