嗨,我正在尝试生成一天中每小时的数组。但是,我希望它从当前时间开始。
例如,
如果当前时间是下午2:00,则数组应该开始:
['1400', '1500', '1600', 1700', '1800', '1900', '2000', '2100', '2200', '2300']
代替
['0000', '0100', '0300', '0400', '0500', '0600', '0700', '0800', '0900', '1000', '1100', '1200', '1300', '1400', '1500', '1600', 1700', '1800', '1900', '2000', '2100', '2200', '2300']
非常直截了当。请参阅内联评论:
var result = []; // Results will go here
var nowHour = new Date().getHours(); // Get current hour of the day
// Loop from current hour number to 23
for(var i = nowHour; i < 24; i++){
result.push(i + "00"); // Put loop counter into array with "00" next to it
}
console.log(result); // show results
你可以使用fill
和map
的Array.Prototype
,如下所示。
Array(24-new Date().getHours()).fill().map((e,i)=>i+new Date().getHours());
var currHour=new Date().getHours();
console.log(Array(24-currHour).fill().map((e,i)=>i+currHour+"00"));
它可以在单个语句中合理有效地完成,包括在10:00之前的小时的前导零,并且通常使用具有可选回调的Array.from,例如,
console.log(
Array.from(Array(24-new Date().getHours()),(x,i)=>('0'+(23-i)).slice(-2)+'00').reverse()
);
不幸的是,它仍然创建了2个数组,第一个是所需长度的空数组,然后用于生成具有所需值的第二个数组,因此性能不会太大。
如果有一个forEvery方法没有以相同的方式跳过不存在的属性,那么它可能只有一个数组(就像for循环一样)。