js將帶有日期格式的陣列物件按時間降序重新排列,最後列印陣列物件的日期
阿新 • • 發佈:2018-10-31
需求:後臺將一個帶有日期格式(不是時間戳)的陣列物件給到前端,前端列印這個陣列物件的日期時需要按時間降序排列
思路:
1.先將物件中的日期欄位變成時間戳,然後通過sort()來排序,接著將物件中的時間戳變成日期; 2.先給物件增加一個欄位publishTimeNew,用來儲存時間戳;然後通過sort()來排序publishTimeNew
雖然第二種思路多增加了一個publishTimeNew欄位佔用空間,但是減少了最後將時間戳變成日期的操作,所以我選擇了第二個思路,下面是我的實現:
<script> var data = [ { id: 1, publishTime: "2018-07-02 10:39:43" }, { id: 2, publishTime: "2018-07-14 10:39:43" }, { id: 3, publishTime: "2018-07-15 10:39:43" }, { id: 4, publishTime: "2018-07-13 10:39:43" }] var dateToTime = function(str){ return (new Date(str.replace(/-/g,'/'))).getTime(); //用/替換日期中的-是為了解決Safari的相容 } for(var i=0; i < data.length; i++){ data[i].publishTimeNew = dateToTime(data[i].publishTime); } data.sort(function(a, b) { return b.publishTimeNew> a.publishTimeNew ? 1 : -1; }); console.log(data); </script>