javascript - 在 JavaScript 中从现在开始对时间数组进行排序
问题描述
嗨,我试图从时间数组中创建一个排序,结果应该是当前时间的最近时间(来自数组)
例子 :
const current_time = new Date() //sample 13:40
时间数组:
const data = ["06:30:00",
"09:00:00",
"11:30:00",
"13:00:00",
"14:30:00",
"15:00:00",
"17:30:00" ,
"18:00:00"]
调用函数进行排序
const result = createTimeSort(current_time , data)
预期结果
//Sample 1 Time 13:40
["13:00:00","14:30:00","15:00:00","17:30:00","18:00:00","06:30:00","09:00:00","11:30:00"]
// Sample 2 Time 17:50
// ["17:30:00","18:00:00","06:30:00","09:00:00","11:30:00","13:00:00","14:30:00","15:00:00"]
解决方案
如果您想获得想要的结果,您可以对数组进行排序并在想要的时间内获取一个带有偏移量的新数组。
function createTimeSort(time, [...array]) {
array.sort();
let index = array.findIndex(s => s > time);
index -= index && 1;
return index
? [...array.slice(index), ...array.slice(0, index)]
: array;
}
const
data = ["06:30:00", "09:00:00", "11:30:00", "13:00:00", "14:30:00", "15:00:00", "17:30:00", "18:00:00"];
console.log(...createTimeSort('13:40', data));
// ["13:00:00", "14:30:00", "15:00:00", "17:30:00", "18:00:00", "06:30:00", "09:00:00", "11:30:00"]
console.log(...createTimeSort('17:50', data));
// ["17:30:00", "18:00:00", "06:30:00", "09:00:00", "11:30:00", "13:00:00", "14:30:00", "15:00:00"]
console.log(...createTimeSort('17:29', data));
console.log(...createTimeSort('17:30:00', data));
推荐阅读
- django - Django - 访问评论模型内的 Post 模块的 pk/id
- javascript - 如何仅使用 JavaScript 监听另一个元素发生的事件?
- tensorflow - 如何修复非法指令(核心转储)
- java - 如何打印出答案的索引?
- java - 在列表 java 中查找 Max Item
- javascript - 在 Express 应用程序中以我自己的形式实现条带化
- python - 自定义 Popen.communicate 方法给出错误的输出
- flutter - Flutter:如何使用 matrix_gesture_detector 设置最大/最小比例
- c++ - 为什么智能指针会导致 std::length_error
- sql - 有没有办法在过程的 WHERE 子句中有条件“IN”语句?