利用擴展符排序合並數組,記錄下來分享給大家


最近接到了新的需求,消息中心按照未讀已讀時間排序的問題,由於前后端分離項目,后端在遠隔千里的那邊,而且也是不同的分公司,讓后台改接口是不可能啦~。后端給的比較混雜如下:

{
    "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、最后運用展開符合並兩個數組。

 

 

比較簡單,隨筆記錄一下分享給大家


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM