Javascript 计算循环变量的最近值

Javascript 计算循环变量的最近值,javascript,time,modulo,Javascript,Time,Modulo,我有一个问题,我每天24小时有3次。为了保持简单,我可以使用十进制表示法: a) 23:45(23.75) b) 11:30(11.50) c) 00:15(00.25) 我想知道,每一次,哪个时间最接近 var closestTime=24 var CloseStacTime=0; 对于(var i=0;i

我有一个问题,我每天24小时有3次。为了保持简单,我可以使用十进制表示法:

a) 23:45(23.75)

b) 11:30(11.50)

c) 00:15(00.25)

我想知道,每一次,哪个时间最接近

var closestTime=24
var CloseStacTime=0;
对于(var i=0;i
多次循环

尝试增量时间的组合,偏移24小时

选择最小的增量时间

var时间=[23.75,11.50,3,6,7];
/**
*时间接近
*
*@param{number}时间
*@返回{number}
*/
函数timeClosestTo(时间){
//要比较的距离变量
var距离=100;
//一天几个小时
var日=24;
//当前最佳
var-best=null;
//对所有时间进行测试
对于(var i=0;ilog(“最接近1:”,timeClosestTo(1),“最接近11:”,timeClosestTo(11),“最接近5:”,timeClosestTo(5))我建议用这些对建立一个列表,然后计算差异

差异是
数组中的第三个元素

基本上你需要检查差值,如果大于12小时,则取24和差值

delta = Math.abs(aa - bb);

if (delta > 12) {
    delta = 24 - delta;
}
函数组合(数组、大小){
功能c(部分,开始){
变量i,l,p;
对于(i=start,l=array.length+part.length+1-size;i12){
δ=24-δ;
}
返回padZero(数学地板(delta))+':'+padZero(数学圆(60*(delta-Math.floor(delta))));
}
变量时间=['23:45','11:30','00:15'],
成对=组合(次数,2);
forEach(函数(a,i,aa){
aa[i][2]=timeDelta(a[0],a[1]);
});
控制台日志(对)

。作为控制台包装器{max height:100%!important;top:0;}
在功能上,我将按如下方式完成此工作

var时间=[23.75,11.50,0.25],
差异=减少的次数((d,t1,i,a)=>a[i+1]?d.concat(a.slice(i+1)
.map(t2=>[t1,t2,[Math.min(Math.abs(t1-t2)),24 Math.abs(t1-t2))]
.map(n=>~~n+”:“+(n%1)*60)[0]]))
:d,[]);
控制台日志(差异)