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.