Use a variable in define msg"X" = -> (instead of msg1, msg2, msg3, msgX in loop)

Hi There :slight_smile:
I'm quite new and have a problem with using a variable in defining the msgX = Number... for Output in a function node. I want to replace msg1, msg2, msg3.... with msgt, msg't', {msg;t} or so to use loop counter for topic and message number. Example in the line with "<-------" in code below

But I don't know how to write the variable as addendum for msg number....

if (msg.topic == "init"){
msg1 = {payload:0}
msg2 = {payload:0}
msg3 = {payload:0}
x = 0
}

if (msg.payload == 1 ){x = x + 1}
if (msg.payload === 0 && x > 0 ){x = x - 1}

for( t = 1; t < 2; t++){

if (msg.topic == t && msg.payload == 1 && x < 3){msg{t} = {payload:1}} // <-------
if (msg.topic == t && msg.payload == 1 && x > 2){msg1 = {payload:0}}
if (msg.topic == t && msg.payload === 0 ) {msg1 = {payload:0}}

if (msg.topic == 2 && msg.payload == 1 && x < 3){msg2 = {payload:1}}
if (msg.topic == 2 && msg.payload == 1 && x > 2){msg2 = {payload:0}}
if (msg.topic == 2 && msg.payload === 0 ) {msg2 = {payload:0}}

if (msg.topic == 3 && msg.payload == 1 && x < 3){msg3 = {payload:1}}
if (msg.topic == 3 && msg.payload == 1 && x > 2){msg3 = {payload:0}}
if (msg.topic == 3 && msg.payload === 0 ) {msg3 = {payload:0}}

}

msg4 = {payload:x}

return [msg1, msg2, msg3, msg4];

Thanks!! :slight_smile:

Some examples :

for (t=0; t<5; t++) msg[t] = t;

msg["0"] = 77;

Thanks for your idea! But doesn't work so, changed below:

if (msg.topic == "init"){
msg1 = {payload:0}
msg2 = {payload:0}
msg3 = {payload:0}
x = 0 // X = Zähler Platten
}

if (msg.payload == 1 ){x = x + 1}
if (msg.payload === 0 && x > 0 ){x = x - 1}

for( t = 1; t < 4; t++){ // t = Zähler Schleife

if (msg.topic == t && msg.payload == 1 && x < 3){msg[t] = {payload:1}}
if (msg.topic == t && msg.payload == 1 && x > 2){msg[t] = {payload:0}}
if (msg.topic == t && msg.payload === 0 ) {msg[t] = {payload:0}}

}

msg4 = {payload:x}

return [msg1, msg2, msg3, msg4];

msg[t] ... is creating an array called msg with members t - so msg[1] msg[2] etc...
so you can just return [msg];
after setting msg[4] = {payload:x};

Ok I understand. So I tried like this:

if (msg.topic == "init"){
msg1 = {payload:0}
msg2 = {payload:0}
msg3 = {payload:0}
x = 0 // X = Zähler Platten
}

if (msg.payload == 1 ){x = x + 1}
if (msg.payload === 0 && x > 0 ){x = x - 1}

for( t = 1; t < 4; t++){ // t = Zähler Schleife

if (msg.topic == t && msg.payload == 1 && x < 3){Ausgang[t] = {payload:1}}
if (msg.topic == t && msg.payload == 1 && x > 2){Ausgang[t] = {payload:0}}
if (msg.topic == t && msg.payload === 0 ) {Ausgang[t] = {payload:0}}

}

msg1 = Ausgang[1]
msg2 = Ausgang[2]
msg3 = Ausgang[3]
msg4 = {payload:x}

return [msg1, msg2, msg3, msg4];

But doesn't work anyway :frowning:

Tank you!

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.