根据当前时间排序时间

Sort time based on current time

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

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

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

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

我怎样才能做到这一点?

虽然最好使用 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