Solicite su ayuda para crear una función en javascript para obtener el resultado mencionado a partir de la entrada proporcionada.
ENTRADA: un objeto (posiblemente un objeto anidado)
ejemplo :
{
"mensaje":"cadena" ,
"datos1": {
"Output1": { "leaf1": "abc", "Leaf2": "123" } }"datos2": {
"Output2": { "leaf3": "abc", "leaf4": "123" } }}
SALIDA: una matriz de cadena
Ejemplo: str= ["mensaje", "datos1.Salida1.hoja1", "datos1.Salida1.hoja2", "datos2.Salida2.hoja3","datos2.Salida2.hoja4"]
Algo así funcionará
const getBranches = (data, prefix=[]) => { if (typeof(data) !== 'object') { return prefix.join('.') } return Object.entries(data).flatMap(([k, v]) => getBranches(v, [...prefix, k])) } const data = { "message": "string", "data1": { "Output1": { "leaf1": "abc", "Leaf2": "123" } }, "data2": { "Output2": { "leaf3": "abc", "leaf4": "123" } } } console.log(getBranches(data))Segunda versión
const data = { "message": "string", "data1": { "Output1": { "leaf1": [{ "b": { "c": "12" } }] } }, "data2": { "Output2": { "leaf3": "abc", "leaf4": "123" } } } const getBranches = (data, prefix = []) => { if (typeof(data) !== 'object') { return prefix.join('.') } return Object.entries(data).flatMap(([k, v]) => Array.isArray(data) ? getBranches(v, [...prefix]) : getBranches(v, [...prefix, k])) } console.log(getBranches(data))