如何使用矩获得数组中最近的下一次时间?

我想找到距离给定时间最近的下一个时间,我从堆栈溢出中得到了这段代码,但我无法获得所需的结果



// Current time in millis

const now = +moment('10:07', 'HH:mm').format('x');

// List of times

const times = ["10:00", "10:18", "23:30", "12:00"];

// Times in milliseconds

const timesInMillis = times.map(t => +moment(t, "HH:mm").format("x"));


function closestTime(arr, time) {

  return arr.reduce(function(prev, curr) {

    return Math.abs(curr - time) < Math.abs(prev - time) ? curr : prev;

  });

}


const closest = moment(closestTime(timesInMillis, now)).format('HH:mm');


// closest is 10:00 but i want the next time 10:18

console.log(closest);

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>


料青山看我应如是
浏览 105回答 1
1回答

喵喔喔

根本不需要片刻24小时时间可排序,可直接比较const times = ["10:00", "10:18", "23:30", "12:00"].sort();const getClosest = targetTime => times.find(time => time >= targetTime) || "N/A";console.log(getClosest("10:07"));console.log(getClosest("11:30"));console.log(getClosest("13:30"));console.log(getClosest("23:40")); // not available in array
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript