Javascript 如何获取数组中的下一个条目而不是当前条目?

Javascript 如何获取数组中的下一个条目而不是当前条目?,javascript,Javascript,我有一段代码可以做到这一点: 如果介于0000和0600之间,则显示“夜间”。如果介于0600和1200之间,则显示“上午”。如果介于1200和1800之间,则显示“下午”,1800和2400之间显示“晚上” 但是,我希望它能够显示数组中的下一个条目,而不是当前条目。所以,在0600到1200之间,应该显示“下午”而不是“上午” 以下是我的代码: 函数开始时间(){ var today=新日期(); var h=today.getHours(); var m=today.getMinutes(

我有一段代码可以做到这一点:

如果介于0000和0600之间,则显示“夜间”。如果介于0600和1200之间,则显示“上午”。如果介于1200和1800之间,则显示“下午”,1800和2400之间显示“晚上”

但是,我希望它能够显示数组中的下一个条目,而不是当前条目。所以,在0600到1200之间,应该显示“下午”而不是“上午”

以下是我的代码:

函数开始时间(){
var today=新日期();
var h=today.getHours();
var m=today.getMinutes();
var wv=today.getDay();
var hv=100*h+m;
var wv1=新数组();
wv1[0]=“00000600,晚上”;
wv1[1]=“06001200,上午”;
wv1[2]=“12001800,下午”;
wv1[3]=“18002400,晚上”;
如果(wv==1){
wv1.forEach(函数(条目){
var schedule=entry.split(',');

如果(hv>=schedule[0]&&hv,我不知道为什么您的代码会变得不必要的复杂。为什么不使用类似于:

var today = new Date(); 
var message;
if(today.getHours() <= 6) message = "Morning"
// etc
var today=新日期();
var消息;

如果(today.getHours(),我不知道为什么您的代码会变得不必要的复杂。为什么不使用类似于:

var today = new Date(); 
var message;
if(today.getHours() <= 6) message = "Morning"
// etc
var today=新日期();
var消息;

如果(today.getHours()只需添加一个检查,查看下一个索引是否大于长度。如果大于长度,则使用0。否则使用下一个索引

函数开始时间(){
var today=新日期();
var h=today.getHours();
var m=today.getMinutes();
var wv=today.getDay();
var hv=100*h+m;
var wv1=新数组();
wv1[0]=“00000600,晚上”;
wv1[1]=“06001200,上午”;
wv1[2]=“12001800,下午”;
wv1[3]=“18002400,晚上”;
如果(wv==1){
wv1.forEach(函数(条目、索引){
var schedule=entry.split(',');
如果(hv>=附表[0]&&hv=wv1.length-1?0:++索引];
var timeofday=nextTime.split(',')[2];
//时间表
document.getElementById('day').innerHTML=timeofday;
}
});
}
}

只需添加一个检查,查看下一个索引是否大于长度。如果大于长度,请使用0。否则,请使用下一个索引

函数开始时间(){
var today=新日期();
var h=today.getHours();
var m=today.getMinutes();
var wv=today.getDay();
var hv=100*h+m;
var wv1=新数组();
wv1[0]=“00000600,晚上”;
wv1[1]=“06001200,上午”;
wv1[2]=“12001800,下午”;
wv1[3]=“18002400,晚上”;
如果(wv==1){
wv1.forEach(函数(条目、索引){
var schedule=entry.split(',');
如果(hv>=附表[0]&&hv=wv1.length-1?0:++索引];
var timeofday=nextTime.split(',')[2];
//时间表
document.getElementById('day').innerHTML=timeofday;
}
});
}
}

在当前设置中获取下一个块的最简单方法是在当前时间中添加600:

 var hv = (600 + 100 * h + m) % 2400;

当然,对于其他设置/对象,也可以使用其他解决方案,但仍可以通过这种方式获取下一个块,而无需额外调用“下一个”索引。在当前设置中获取下一个块的最简单方法是将600添加到当前时间:

 var hv = (600 + 100 * h + m) % 2400;

当然,对于其他设置/对象,也可以使用其他解决方案,但获取下一个块仍然可以通过这种方式完成,而无需额外调用“下一个”索引

我的做法略有不同:

startTime();
函数startTime(){
var hours=新日期().getHours();
var i=数学下限(小时/6);
var timeofday=[“上午”、“下午”、“晚上”、“晚上”][i];
document.getElementById('day').innerHTML=timeofday;
}

我会稍微改变一下:

startTime();
函数startTime(){
var hours=新日期().getHours();
var i=数学下限(小时/6);
var timeofday=[“上午”、“下午”、“晚上”、“晚上”][i];
document.getElementById('day').innerHTML=timeofday;
}

对于CodeOcelot来说,您的方法比必要的方法更复杂,但是我将回答这个问题,假设您需要遵循这个特定的模型

解决方案:我将添加
数组
参数以访问当前数组以及
索引
以访问下一项

if(wv==1){
forEach(函数(条目、索引、数组){
var schedule=entry.split(',');
var nextItem=array[index++].split(',');
如果(hv>=计划[0]&&hv=wv1.length?0:++索引];
var timeofday=nextItem[2];
//时间表
document.getElementById('day').innerHTML=timeofday;
}
});
}
}

希望这能有所帮助!

对于CodeOcelot来说,您的方法比必要的方法更复杂,但是我将回答这个问题,假设您需要遵循这个特定的模型

解决方案:我将添加
数组
参数以访问当前数组以及
索引
以访问下一项

if(wv==1){
forEach(函数(条目、索引、数组){
var schedule=entry.split(',');
var nextItem=array[index++].split(',');
如果(hv>=计划[0]&&hv=wv1.length?0:++索引];
var timeofday=nextItem[2];
//时间表
document.getElementById('day').innerHTML=timeofday;
}
});
}
}

希望这能有所帮助!

你写的代码就像是百年前的某个人(只是开玩笑)。请聪明而简短。(顺便说一句:我喜欢CodeOcelot中简单的if语句)

另一种更具声明性的方法是这样的(没有使每一个代码更复杂的if语句),这是可以做到的,因为名称与时钟数是冗余的

var names = ["Night","Morning","Afternoon","Evening"]
var index = Math.floor(new Date().getHours() * names.length / 24)
document.getElementById('day').innerHTML = names[index];

你写的代码就像百年前的某个人(只是开玩笑)。请聪明和简短。(顺便说一句:我喜欢