利用擴充套件符排序,記錄下來分享給大家
阿新 • • 發佈:2018-12-11
由於前後端分離專案,後端在遠隔千里的那邊,而且也是不同的分公司,讓後臺改介面基本就是不可能啦~。最近接到了新的需求,訊息中心按照未讀已讀時間排序的問題,後端給的比較混雜如下:
{ "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、最後運用展開符合並兩個陣列。
比較簡單,隨筆記錄一下分享給大家