Loop structure in arrays [node red]

I didn't understand the problem very well. you can get inside the array something like this

[{"id":"f8bbf64fbc962316","type":"inject","z":"c991dbcde03824f2","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":1262,"y":264,"wires":[["3b469bd5ce492aa8"]]},{"id":"3b469bd5ce492aa8","type":"template","z":"c991dbcde03824f2","name":"","field":"payload","fieldType":"msg","format":"json","syntax":"mustache","template":"{\n    \"name\": \"john\",\n    \"birthday\": 2002,\n    \"movies\": [\n        {\n            \"adventure\": \"Avatar\",\n            \"action\": \"Rambo\",\n            \"fiction\": \"interstellar\"\n        },\n        {\n            \"horror\": \"choose one\",\n            \"options\": [\n                {\n                    \"type1\": \"psychological\",\n                    \"type2\": \"visual\"\n                }\n            ]\n        }\n    ]\n}","output":"json","x":1386,"y":264,"wires":[["e57f387dbe1e8bf1"]]},{"id":"e57f387dbe1e8bf1","type":"function","z":"c991dbcde03824f2","name":"payload","func":"/*\nlet list = msg.payload.movies;\nvar msglist = [];\nlet tamanho = msg.payload.movies.length\n\nfor (var indexi = 0; indexi < tamanho; indexi++){\n        msglist.push({payload:list[indexi]});\n    }\n\nreturn [msglist];\n*/\n\nlet msglist = []\n\nmsg.payload.movies.forEach(el => {\n    if(Array.isArray(el.options)){\n        msg.payload.movies[1].options.forEach(es => {\n            msglist.push(es)\n        })\n    }else {\n        msglist.push(el)\n    }\n})\n\nreturn [ msglist ]","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1518,"y":264,"wires":[["3f91816b0e7ed1f2"]]},{"id":"3f91816b0e7ed1f2","type":"debug","z":"c991dbcde03824f2","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1646,"y":264,"wires":[]}]

Using "for" like this for (index = 0; index <a.length; ++ index) { } not very good, better use for (var key in a) {}. Easier to read and less to write.

1 Like