数据分组展示有两种方式,一种是后端直接传入分组格式的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数组按日期分组显示数据的更多相关文章

  1. 小程序开发笔记【二】,抽奖结果json数据拼装bug解决

    抽奖结果数据json格式数据拼接bug,如下图,只发布了两个奖项,每个奖项设置2个奖品,但最后拼接数据的时候出现3个奖项 json数据格式如下 "luckyResult":[ { ...

  2. 微信小程序开发笔记02

    今天学习了微信小程序开发用到的语言,wxml与wxss语言基本语法与html和css基本语法相似,学习起来相对简单.在小程序主要的语言是js(javascript,跟准确的说是jqery) ,由于这种 ...

  3. 微信小程序开发笔记01

    微信小程序开发的优势 1,不用安装,即开即用,用完就走.省流量,省安装时间,不占用桌面: 2,体验上虽然没法完全媲美原生APP,但综合考虑还是更优: 3,对于小程序拥有者来说,开发成本更低,他们可以更 ...

  4. 微信小程序开发笔记(一)

    一.为什么要学习微信小程序开发 微信小程序是一个可以在微信上打开的轻应用,他是由多个页面组成的程序,跟传统APP比较如下: 优点 1.不需要在应用商店下载,不占用内存空间,即开即用 2.可以在微信内直 ...

  5. 微信小程序开发笔记

    前言: 因为前段时间一直在做关于微信小程序方面的项目,作为一名后端的攻城狮而言做一些简单的前端页面数据操作和管理还是比较容易快上手的,当然前提是要理解微信小程序的基本语法和请求原理.该篇博客主要记录的 ...

  6. 微信小程序开发笔记(二)

    一.前言 继承上一篇所说的,有了对微信小程序的基础概念后,这边将会示范动手做一个小程序,在动手的过程中我们可以更快的熟悉小程序里面的架构和开发流程. 二.小程序的设计 这次要做的是一个猜数字的程序,程 ...

  7. 微信小程序开发笔记04

    今天将小程序的页面进行优化 消除昨天遇到的bug问题. 完成了微信小程序的开发.

  8. 微信小程序开发笔记03

    今天基本实现了微信小程序主要功能,页面还没有进行优化,有些功能还需完善. 页面之间的信息转化部分还未实现.

  9. 微信小程序开发之拼接json数组字符串

    直接上代码   : var imageitem;    var imageitemstring='';    for(var i=0;i< that.data.fbimages.length;i ...

随机推荐

  1. SQL server已经设置为单用户模式,还是无法做分离、属性设置等操作

    https://www.cnblogs.com/xingyunqiu/p/10336938.html SQL server已经设置为单用户模式,Sql server还原失败数据库正在使用,无法获得对数 ...

  2. java基础(26):Thread、线程创建、线程池

    1. 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并 ...

  3. [转]English - 开口说话工具箱: 27个高频词单词

    本文转自:https://blog.csdn.net/weixin_34247032/article/details/87125465 英语初学者注意力不要放在语法上, 首先要懂得如何让自己开口说英语 ...

  4. nRF24L01+不能接收或接收偶尔异常等问题实战分享

    nRF24L01+接收异常问题综述 在调试nRF24L01+无线收发模块的时候,最具标志性的环节就是在接收端可以收到数据.在实际应用调试中,会出现很多意想不到的情况,造成nRF24L01+模块接收端无 ...

  5. SpringBoot+Thyemelaf开发环境正常,打包jar发到服务器就报错Template might not exist or might not be accessible

    这里说一下Thyemelaf的巨坑 写了一个SpringBoot+Thyemelaf的项目,并不是前后端分离.今天想放到linux服务器上玩玩,打成jar包,然后一运行他妈居然报错了,报了一个Temp ...

  6. [b0002] Hadoop HDFS cmd常用命令练手

    目的: 学会HDFS CLI 常用操作 环境: Hadoop 2.6.4 伪分布式版 环境搭建参考本博客前篇文章: 伪分布式 hadoop 2.6.4 帮助: hadoop@ssmaster:~$ h ...

  7. 获取SpringCloud gateway响应的response的值,记录踩坑

    最近在做网关改造,想要通过Gateway过滤器获取ResponseBody的值,查看了网上的帖子和官网内容: 帖子:https://cloud.tencent.com/developer/articl ...

  8. Linux—yum使用详解

    yum配置 yum的配置文件在  /etc/yum.conf  参考:https://www.cnblogs.com/yhongji/p/9384780.html yum源配置 yum源文件在 /et ...

  9. ubuntu 改键

    参考: https://www.jianshu.com/p/9411ee427cfd https://www.cnblogs.com/zhengchl/archive/2012/08/25/26557 ...

  10. postman---postman参数化

    我们在做接口测试的过程中,都会遇到同一个接口不同的数据,每次去一个个填写数据就太麻烦了,今天我们一起学习下如何通过postman进行参数化 参数化 参数化就是1个接口请求不同的数据,我们可以通过把请求 ...