1. 程式人生 > >利用擴充套件符排序,記錄下來分享給大家

利用擴充套件符排序,記錄下來分享給大家

由於前後端分離專案,後端在遠隔千里的那邊,而且也是不同的分公司,讓後臺改介面基本就是不可能啦~。最近接到了新的需求,訊息中心按照未讀已讀時間排序的問題,後端給的比較混雜如下:

{
    "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、最後運用展開符合並兩個陣列。

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