我是 javascript 的新手。 我工作三班倒,想通过 node-red 控制家庭助理中的事件。 我使用各种示例编写了一个简短的脚本,它只在表格末尾有效。 我无法让它循环,所以我在这里寻求帮助。 我想在更改周期的第 20 天后回到数组的开头。
var dayStart = new Date(2023, 2, 4);
const list = ['night1', 'night2', 'night3', 'night4',
'free_n', 'afternoon1', 'afternoon2', 'afternoon3', 'afternoon4',
'free_a', 'morning1', 'morning2', 'morning3', 'morning4',
'free1', 'free2', 'free3', 'free4', 'free5', 'free6'];
const date = new Date;
var day = Math.floor((date.getTime() - dayStart.getTime()) / (1000 * 60 * 60 * 24));
var day = (day + 1);
var change = (list[(day - 1)]);
msg.day = day;
msg.payload = change;
return msg;
您可以添加一个新变量,每次经过第 20 天时都会重置为 0。例如,让我们将新变量命名为 dayArray
在循环外,添加
var dayArray = 0
在循环中,您可以将 dayArray 添加 1,就像您现在对 day 变量所做的那样,然后添加一个 if 语句。如果 dayArray 大于/等于 20,则 dayArray = 0
所以这就是您的代码:
var dayStart = new Date(2023, 2, 4);
const list = ['night1', 'night2', 'night3', 'night4',
'free_n', 'afternoon1', 'afternoon2', 'afternoon3', 'afternoon4',
'free_a', 'morning1', 'morning2', 'morning3', 'morning4',
'free1', 'free2', 'free3', 'free4', 'free5', 'free6'];
const date = new Date;
var day = Math.floor((date.getTime() - dayStart.getTime()) / (1000 * 60 * 60 * 24));
var day = (day + 1);
var change = (list[dayArray]);
if(dayArray >= 20){
var dayArray = 0;
} else {
var dayArray = dayArray + 1;
}
msg.day = day;
msg.payload = change;
return msg;
请告诉我这是否有效,我不确定您要对代码做什么,所以我根据您在描述中的要求进行了回答