[{"name1":1},{"name2":2},{"name3":3}]
However, the original data is no longer other object but instead a couple of arrays, like below:
let arrName = ["name1","name2","name3"];
let arrNumber = [1,2,3];
It is just a matter of combining the pairs name and value from each array. It could be done with a while loop to iterate over the arrays, the method array.shift to extract the elements from the arrays, the method array.push to load them into a temporary array. It will be necessary to combine the pair name and value into a single object. This last part could be achieved by using the property value shorthand that goes like this:
{ name: name, value: value} can be coded {name, value}, no need to repeat the variable name if it is the same as the key in the object.
Therefore the code inside the function node would be as follows:
let outputMsg = [];
let arrName = ["name1","name2","name3"];
let arrNumber = [1,2,3];
while (arrName.length > 0) {
name = arrName.shift();
value = arrNumber.shift();
outputMsg.push({ name, value });
}
msg.payload = outputMsg;
return msg;
and this is how the debug node will display the results in the side panel of Node-Red;
Node-Red flow:
[{"id":"74cfb3c0.34942c","type":"inject","z":"43f25cb3.43e2d4","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":303,"y":285,"wires":[["d79853f4.ef2cc"]]},{"id":"544646e7.ce3208","type":"debug","z":"43f25cb3.43e2d4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":691.0000076293945,"y":285.00000381469727,"wires":[]},{"id":"d79853f4.ef2cc","type":"function","z":"43f25cb3.43e2d4","name":"Two Arrays to Object","func":"let outputMsg = [];\nlet arrName = [\"name1\",\"name2\",\"name3\"];\nlet arrNumber = [1,2,3];\n\nwhile (arrName.length > 0) {\nname = arrName.shift(); \nvalue = arrNumber.shift();\noutputMsg.push({name, value});\n}\n\nmsg.payload = outputMsg;\nreturn msg;","outputs":1,"noerr":0,"x":499.99999809265137,"y":286,"wires":[["544646e7.ce3208"]]}]