Я использую узел-красный и у меня есть следующий входящий msg.payload:Перебор массива и анализ
[ "=00ECY20WA200_RECV_P1SEL", "true", "=00ECY20WA200_RECV_P2SEL", "true", "=00ECY20WA300_RECV_P2SEL", "true", "=00ECY20WA300_RECV_P1SEL", "true", "=00ECY20WA202_RECV_P1SEL", "true", "=00ECY20WA202_RECV_P2SEL", "false", "=00ECY20WA303_RECV_P2SEL", "true", "=00ECY20WA303_RECV_P1SEL", "true", "=00ECY20WA204_RECV_P1SEL", "false", "=00ECY20WA204_RECV_P2SEL", "true", "=00ECY20WA305_RECV_P2SEL", "false", "=00ECY20WA305_RECV_P1SEL", "false", "=00ECY20WA205_RECV_P1SEL", "false", "=00ECY20WA205_RECV_P2SEL", "false", "=00ECY20WA306_RECV_P1SEL", "true", "=00ECY20WA306_RECV_P2SEL", "true", "=00ECY20WA206_RECV_P1SEL", "false", "=00ECY20WA206_RECV_P2SEL", "true", "=00ECY20WA307_RECV_P1SEL", "true", "=00ECY20WA307_RECV_P2SEL", "true", "=00ECY20WA207_RECV_P1SEL", "false", "=00ECY20WA207_RECV_P2SEL", "false", "=00ECY20WA308_RECV_P1SEL", "false", "=00ECY20WA308_RECV_P2SEL", "true", "=00ECY20WA208_RECV_P1SEL", "false" ]
Я пытаюсь разобрать все элементы, которые являются «истинными» и сцепить их в массиве (recivingAlarms), анализируемый элемент - тот, который находится непосредственно перед булевым оператором. Я пытаюсь сделать это с циклом for, и я уверен, что создал бесконечный цикл, я не уверен, как его исправить. Вот что у меня есть:
var recievingAlarms = [];
for (i = 1; i < msg.payload.length; i+2)
if(msg.payload[i] === true) {
recievingAlarms.concat(msg.payload[i-1]);
}
msg.payload = recievingAlarms;
return msg;
вместо 'я + 2' использование' я + = 2'. Изменить условие 'msg.payload [i] === true' to' msg.payload [i] == true', так как '' true ''является строкой или сравнивается со строкой' 'true'' вместо boolean 'true '. А также 'recievingAlarms = recievingAlarms.concat (msg.payload [i-1]);' – RaR
Или даже, 'msg.payload [i] === 'true'' –