最近接到了新的需求,消息中心按照未讀已讀時間排序的問題,由於前后端分離項目,后端在遠隔千里的那邊,而且也是不同的分公司,讓后台改接口是不可能啦~。后端給的比較混雜如下:
{ "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、最后運用展開符合並兩個數組。
比較簡單,隨筆記錄一下分享給大家
