lzyq878平台
  咨询电话:15554717830

lzyq手机版

利用扩展符排序合并数组,记录下来分享给大家

最近接到了新的需求,消息中心按照未读已读时间排序的问题,由于前后端分离项目,后端在远隔千里的那边,而且也是不同的分公司,让后台改接口是不可能啦~。后端给的比较混杂如下:

{ "mapResult": [{ "ID": 3749, "TITLE": "待处理:柏欢测试计划--目标设定", "CREATE_DATE": "2018-06-23 14:30:50", "PUBLISH_DATE": "2018-06-23 14:30:50", "HAS_READ": 3749, "flag": "2018-06-23" }, { "ID": 3740, "TITLE": "待处理:柏欢测试计划--目标设定", "CREATE_DATE": "2018-06-22 22:29:46", "PUBLISH_DATE": "2018-06-22 22:29:46", "HAS_READ": 3740, "flag": "2018-06-22" }, { "ID": 3721, "TITLE": "待处理:柏欢测试计划--目标设定", "CREATE_DATE": "2018-06-22 21:06:21", "PUBLISH_DATE": "2018-06-22 21:06:21", "HAS_READ": 3721, "flag": "2018-06-22" }, { "ID": 3707, "TITLE": "待处理:柏欢测试计划--目标设定", "CREATE_DATE": "2018-06-23 22:43:41", "PUBLISH_DATE": "2018-06-23 22:43:41", "HAS_READ": 0, "flag": "2018-06-22" },{ "ID": 3705, "TITLE": "待处理:柏欢测试计划--目标设定", "CREATE_DATE": "2018-06-22 20:43:41", "PUBLISH_DATE": "2018-06-22 20:43:41", "HAS_READ": 0, "flag": "2018-06-22" } ,{ "ID": 261, "TITLE": "待处理:管信-erp-人力其它-月--员工自评", "CREATE_DATE": "2018-05-03 14:04:59", "PUBLISH_DATE": "2018-05-03 14:04:59", "HAS_READ": 261, "flag": "2018-05-03" }, { "ID": 3706, "TITLE": "待处理:柏欢测试计划--目标设定", "CREATE_DATE": "2018-06-25 21:43:41", "PUBLISH_DATE": "2018-06-25 21:43:41", "HAS_READ": 0, "flag": "2018-06-22" },{ "ID": 265, "TITLE": "待处理:管信-erp-人力其它-月--员工自评", "CREATE_DATE": "2018-05-03 15:04:59", "PUBLISH_DATE": "2018-05-03 15:04:59", "HAS_READ": 265, "flag": "2018-05-03" }]}

上述数据为后台给的数据:

HAS_READ字段为:0是未读,为ID是已读。需求是按照先未读在已读,然后未读已读分别按照时间在排序,想到这大部分小伙伴都觉得可能需要2-3个循环才可以搞定!,但是我们也要考虑性能,所以思索了一会按照以下代码进行了排序        let self=this;

       let mapResultUnread=[]; let mapResultRead=[]; let mapResult=[]; for(var i=0;i<res.mapResult.length;i++){ if(res.mapResult[i].HAS_READ=="0"){ mapResultUnread.push(res.mapResult[i]); //如果是未读 存进未读数组 }else{ mapResultRead.push(res.mapResult[i]); //反之存进已读数组 } } mapResultUnread.sort(self.sortHAS_REA); //按照时间排序 mapResultRead.sort(self.sortHAS_REA);//按照时间排序

mapResult=[...mapResultUnread,...mapResultRead] //合并两个数组

sortHAS_READ(a,b){ //按照日期排序 return Date.parse(a.CREATE_DATE) - Date.parse(b.CREATE_DATE) }

 

1、先声明三个三个空数组,分别为未读已读,和排序好的列表,

2、循环如果是未读直接放到未读列表,不是未读就是已读了,那么久放在已读列表,

3、然后在分别按照日期排序,用sort方法。

4、最后运用展开符合并两个数组。

 

 

比较简单,随笔记录一下分享给大家

, 1, 0, 9);