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)
有人可以建议一种方法对其进行正确排序,并找到使用当前时间最接近的时间吗?提前致谢
只需单独添加当前小时和数组小时之间的差异,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
| 归档时间: |
|
| 查看次数: |
3105 次 |
| 最近记录: |