Javascript 在数组中循环并解析
我正在使用节点red,我有以下传入的msg.payload:Javascript 在数组中循环并解析,javascript,node-red,Javascript,Node Red,我正在使用节点red,我有以下传入的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",
[ "=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" ]
我试图解析所有“true”的项,并将它们连接到一个数组(receivingalarms)中,解析的项正好位于布尔运算符之前。我正试图用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;
var receivingalarms=[];
对于(i=1;i
这是您的解决方案
var recievingAlarms = [];
for (i = 1; i < msg.payload.length; i=i+2)
if(msg.payload[i] == "true") {
recievingAlarms=recievingAlarms.concat(msg.payload[i-1]);
}
msg.payload = recievingAlarms;
return msg;
var receivingalarms=[];
对于(i=1;i
这是您的解决方案
var recievingAlarms = [];
for (i = 1; i < msg.payload.length; i=i+2)
if(msg.payload[i] == "true") {
recievingAlarms=recievingAlarms.concat(msg.payload[i-1]);
}
msg.payload = recievingAlarms;
return msg;
var receivingalarms=[];
对于(i=1;i
您的循环现在是无限的,因为您没有递增i
,要递增i
,您需要将i+2
替换为i+=2
,以便重新分配其值:
var receivingAlarms = [];
for (var i = 1; i < msg.payload.length; i += 2) {
if(msg.payload[i] === "true") { //replace true with "true"
receivingAlarms.push(msg.payload[i-1]); //replace concat with push because msg.payload[i - 1] is not an Array
}
}
msg.payload = receivingAlarms;
return msg;
var receivingAlarms=[];
对于(变量i=1;i
您还需要将
.concat()
更改为.push()
-.concat()
用于合并/组合两个数组,但msg.payload[i-1]
的结果不是数组。此外,还需要修改true
的条件检查以检查字符串“true”
,因为有效负载数组中的值是字符串而不是布尔值。您的循环现在是无限的,因为您没有递增i
,要增加i
,您需要将i+2
替换为i+=2
,以便重新分配其值:
var receivingAlarms = [];
for (var i = 1; i < msg.payload.length; i += 2) {
if(msg.payload[i] === "true") { //replace true with "true"
receivingAlarms.push(msg.payload[i-1]); //replace concat with push because msg.payload[i - 1] is not an Array
}
}
msg.payload = receivingAlarms;
return msg;
var receivingAlarms=[];
对于(变量i=1;i
您还需要将.concat()
更改为.push()
-.concat()
用于合并/组合两个数组,但msg.payload[i-1]
的结果不是数组。此外,还需要修改true
的条件检查,以检查字符串“true”
,因为有效负载数组中的值是字符串而不是布尔值
i
永远不会递增,因此循环的条件永远不会计算为false(i
将始终小于.length
)“true”
和true
不是同一类型(一个是字符串,另一个是布尔值)。将msg.payLoad[i]
与“true”
进行比较concat
concat两个数组。使用push
向数组中添加新项var recievingAlarms = [];
for (i = 1; i < msg.payload.length; i += 2)
if(msg.payload[i] === "true")
recievingAlarms.push(msg.payload[i - 1]);
msg.payload = recievingAlarms;
var receivingalarms=[];
对于(i=1;i
i
永远不会递增,因此循环的条件永远不会计算为false(i
将始终小于.length
)“true”
和true
不是同一类型(一个是字符串,另一个是布尔值)。将msg.payLoad[i]
与“true”
进行比较concat
concat两个数组。使用push
向数组中添加新项var recievingAlarms = [];
for (i = 1; i < msg.payload.length; i += 2)
if(msg.payload[i] === "true")
recievingAlarms.push(msg.payload[i - 1]);
msg.payload = recievingAlarms;
var receivingalarms=[];
对于(i=1;i
使用i+=2
代替i+2
。将条件msg.payload[i]==true
更改为msg.payload[i]==true
,因为“true”
是字符串或与字符串“true”
比较,而不是布尔值true
。还有receivingalarms=receivingalarms.concat(msg.payload[i-1])
或甚至,msg.payload[i]='true'
而不是i+2
使用i+=2
。将条件msg.payload[i]==true
更改为msg.payload[i]==true
,因为“true”
是字符串或与字符串“true”
比较,而不是布尔值true
。还有receivingalarms=receivingalarms.concat(msg.payload[i-1])
甚至,msg.payload[i]==“true”
这里有一个小错误:你忘了打开{
主体的大括号!啊,谢谢!将会更新那里的一个小错误:你忘了打开主体的{
大括号!啊,谢谢!将会更新