Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中循环并解析_Javascript_Node Red - Fatal编程技术网

Javascript 在数组中循环并解析

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",

我正在使用节点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", "=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”
    这里有一个小错误:你忘了打开
    {
    主体的
    大括号!啊,谢谢!将会更新那里的一个小错误:你忘了打开
    主体的
    {
    大括号!啊,谢谢!将会更新