根据当前时间对时间进行排序

时间:2020-09-12 07:00:17

标签: javascript sorting momentjs

我正在尝试根据当前时间对数组进行排序。这是我的数组

[
   {
      "time":"10:00:00"
   },
   {
      "time":"10:30:00"
   },
   {
      "time":"13:30:00"
   },
   {
      "time":"14:30:00"
   }
]

我想返回一个数组,其中最接近的当前时间在第一个索引上,然后下一个关闭(直到即将到来的时间),而上一个时间将是最后一个项目。例如,如果当前时间是1pm,则预期结果将是

[
   {
      "time":"13:30:00"
   },
   {
      "time":"14:30:00"
   },
   {
      "time":"10:00:00"
   },
   {
      "time":"10:30:00"
   }
]

我该如何实现?

1 个答案:

答案 0 :(得分:1)

虽然使用UNIX时间戳来表示时间会更好,但是您可以执行以下操作:

var times = [
   {
      "time":"10:00:00"
   },
   {
      "time":"10:30:00"
   },
   {
      "time":"13:30:00"
   },
   {
      "time":"14:30:00"
   }
];

var currentTime = "13:00:00";
var sortedTimes = times.sort((a, b) => {
    if (a.time < currentTime && b.time > currentTime) return 1;
    else if (a.time > currentTime && b.time < currentTime) return -1;
    else if (a.time < b.time) return -1;
    return 1;
});

如此处所述:https://www.w3schools.com/jsref/jsref_sort.asp