数据分组展现有两种方式,一种是后端直接传入分组格式的Json数据,另外一种是咱们在前端本身转换格式,这里咱们在前端处理转换按日期分组的数据格式html
一、例如后端返回数据格式为:前端
[{createtime:'2019-07-29',content:'哈哈哈'},{createtime:'2019-07-29',content:'哈哈哈'}]
二、页面展现须要的格式为:mysql
[{createtime:'2019-07-29',list:[{createtime:'2019-07-29',content:'哈哈哈'},{createtime:'2019-07-29',content:'哈哈哈'}]}]
三、下面咱们使用Js处理成按日期分组归类的数据,代码以下:git
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); } })
四、处理后的结果:sql
[ { "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
http://www.javashuo.com/article/p-gmdrskit-ku.htmlpost