欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-10-15 13:17:42
最近接到了新的需求,消息中心按照未读已读时间排序的问题,由于前后端分离项目,后端在远隔千里的那边,而且也是不同的分公司,让后台改接口是不可能啦~。后端给的比较混杂如下: 上述数据为后台给的数据: let self=this; 1、先声明三个三个空数组,分别为未读已读,和排序好的列表, 2、循环如果是 ......

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

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

 

 

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