zoukankan      html  css  js  c++  java
  • 利用扩展符排序合并数组,记录下来分享给大家

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

    {
        "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、最后运用展开符合并两个数组。

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

  • 相关阅读:
    数据库知识总结
    servlet总结
    创建Dynamic Web Project工程
    Python--(爬虫与数据库的连接)
    Mongodb数据库操作
    Python Web(Django)连接SQL SERVER
    Python操作MySql
    Python(Django)项目与Apache的管理交互
    Python Django连接(听明白了是连接不是创建!)Mysql已存在的数据库
    Python selenium自动化网页抓取器
  • 原文地址:https://www.cnblogs.com/wenbodeboke/p/9705142.html
Copyright © 2011-2022 走看看