我有以下格式的日期

[
    ["First Name", "10 Sep. 2017 2:00 PM"],
    ["First Name", "10 Sep. 2017 2:00 PM"],
    ["First Name", "10 Sep. 2017 1:00 PM"],
    ["First Name", "10 Sep. 2017 8:00 AM"],
    ["First Name", "9 Sep. 2017 2:00 PM"],
    ["First Name", "9 Sep. 2017 2:00 PM"],
    ["First Name", "9 Sep. 2017 1:00 PM"],
    ["First Name", "9 Sep. 2017 8:00 AM"]
]


并希望将其作为输出:

[
    ["First Name", "10 Sep. 2017 8:00 AM"],
    ["First Name", "10 Sep. 2017 1:00 PM"],
    ["First Name", "10 Sep. 2017 2:00 PM"],
    ["First Name", "10 Sep. 2017 2:00 PM"],
    ["First Name", "9 Sep. 2017 8:00 AM"],
    ["First Name", "9 Sep. 2017 1:00 PM"],
    ["First Name", "9 Sep. 2017 2:00 PM"],
    ["First Name", "9 Sep. 2017 2:00 PM"]
]


请注意日期的顺序,但时间是按时间顺序更改的。换句话说,时代倒转了。我怎样才能做到这一点?这是我的代码,在此之前,我必须生成第一个示例数组

function sortTable(data) {

  return sortTableHelper(data);

  function sortTableHelper(data) {
   data = data.sort((elem1, elem2) => {
     var date1 = moment(elem1[1], 'D MMM YYYY h:m A')
       , date2 = moment(elem2[1], 'D MMM YYYY h:m A');

     if (date1.isAfter(date2)) return 1;

     return -1;
   });

   return data;
 }
}


如何修改必须按时间顺序排列的现有排序代码?

最佳答案

反转返回码,以便您的结果递增而不是递减:

if (date2.isAfter(date1)) return 1;
if (date1.isAfter(date2)) return -1;
return 0;


注意我更改了代码,以使当项目相等时返回0。

07-24 09:46
查看更多