排序并找到距离当前时间最近的时间

Ash*_*n S 5 javascript arrays sorting json

我有很多次

    ["10:00 PM", "08:00 AM", "12:00 AM", "01:00 AM", "12:00 PM", 
     "03:00 AM", "07:00 AM", "06:00 PM"]
Run Code Online (Sandbox Code Playgroud)

我想对它们进行排序并找到距离当前时间最近的时间,例如,假设现在时间是 05:00 PM,上面的数组应返回 06:00 PM作为响应。

我可以用下面的代码对它们进行排序

    let sortedArray = arrayOfData.sort(function (a, b) {
    return parseInt(a.substring(0, 2)) - 
    parseInt(b.substring(0, 2));
    }) 
Run Code Online (Sandbox Code Playgroud)

有人可以建议一种方法对其进行正确排序,并找到使用当前时间最接近的时间吗?提前致谢

And*_*rut 4

只需单独添加当前小时和数组小时之间的差异,array然后sort升序并从中获取第一个元素array将是最合适的小时。

检查以下代码片段:

times = ["10:00 PM","7:00 PM", "08:00 AM", "12:00 AM", "01:00 AM", "12:00 PM", 
     "03:00 AM", "07:00 AM", "06:00 PM"];

const currentTime = new Date();
const timeDiff = [];

times.sort((a, b) => {
  return a.indexOf('PM');
})

times.filter(time => {
  const _meridianPosition = time.indexOf('AM') > -1 ? 'AM' : 'PM';

  let _time = parseInt(time);

    if(_meridianPosition === 'PM' && _time !== 12) {
      _time += 12;
    } else if(_meridianPosition === 'AM' && _time === 12) {
      _time = 0;
    }

    const k = Math.abs(currentTime.getHours() - _time);
     timeDiff.push({hour: time, diff: k});
});

timeDiff.sort((a,b) => {
  return a.diff - b.diff;
});

console.log(timeDiff[0].hour);
Run Code Online (Sandbox Code Playgroud)

工作小提琴:https://jsbin.com/zojawagiyi/6/edit?js,console