如何回到工作日程中的板头?

问题描述 投票:0回答:1

我是 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;
javascript node-red
1个回答
0
投票

您可以添加一个新变量,每次经过第 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;

请告诉我这是否有效,我不确定您要对代码做什么,所以我根据您在描述中的要求进行了回答

© www.soinside.com 2019 - 2024. All rights reserved.