利用扩展符排序合并数组,记录下来分享给大家
2018-09-26 09:47
465 查看
最近接到了新的需求,消息中心按照未读已读时间排序的问题,由于前后端分离项目,后端在远隔千里的那边,而且也是不同的分公司,让后台改接口是不可能啦~。后端给的比较混杂如下:
{ "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、最后运用展开符合并两个数组。 比较简单,随笔记录一下分享给大家
相关文章推荐
- Eclipse开发工具的一些小知识,Eclipse切换工作空间的办法!(记录下来,希望与大家一起分享,共同学习吧!)
- 把技术记录下来,与大家分享
- 编写学习的java几种常用数组的排序方法,给大家分享一下
- 利用社会安全号码对学生记录构成的数组排序。1000个桶的基数排序并分三趟进行
- [2012-06-18]awk利用关联数组合并记录
- 数组排序数字大小,与筛选最大值最小值。冒泡比较法。。研究了好久才写出来与大家分享
- lintcode刷题记录合并排序数组 java
- lintcode刷题记录合并排序数组 java
- LintCode之6 合并排序数组
- W. :利用最小优先级队列实现对k个已序队列的合并排序。习题6.5-8
- Merge Sorted Array 合并排序的数组
- 利用“指针”对主调函数中数组进行排序,(菜鸟知道模块化)
- 数组-选择排序-记录下标
- 利用JAVA的BitSet实现数组排序
- PHP简单实现多维数组合并与排序功能示例
- C++利用stl::sort对结构体数组中的字符串成员排序
- LintCode【简单】6. 合并排序数组 II,9. Fizz Buzz 问题。代码及思路 ——【vector用法】
- 设计模式(内容是我从书上总结下来的,分享给大家)
- 我的博客正式成立了,本博客记录每天的点点滴滴,学习到的知识和大家一起分享,希望大家多多包涵。
- 算法题 -- 合并两个大小为n的已排序数组