Digamos que nos dan un JSON siguiente:
{ "a": { "title": { "text": "text a" } }, "b": { "title": { "text": "text b" } } }¿Cómo podría convertir y/o fusionar esto en la siguiente estructura:
{ "title": { "text": { "a": "text a", "b": "text b" } } }o un ejemplo diferente:
let aObject = { "level1": { "level2": { "level3": "text a" } } } let bObject = { "level1": { "level2": { "level3": "text b" } } } let cObject = { "level1": { "level2": { "level3": "text c" } } }dentro
{ "level1": { "level2": { "level3": { "aObject": "text a", "bObject": "text b", "cObject": "text c" } } } }Puede ser muy fácil ya que me falta una palabra clave que describa esta función, o puede ser complicado archivarlo. Cualquier ayuda es apreciada.
Ejemplo de trabajo, buscando una solución más simple:
let object = { "a": { "title": { "text": "text a" } }, "b": { "title": { "text": "text b" } } } function reduce(node, object, result = {}) { for (let key in object) { if (typeof result[key] === 'undefined') { result[key] = {} } if (typeof object[key] === 'string') { result[key][node] = object[key] } else { reduce(node, object[key], result[key]) } } return result } let result = Object.entries(object).reduce((result, [key, value]) => { return reduce(key, value, result) }, {}) console.log(result)Se puede hacer de esta manera. :)
let obj = { a: { title: { text: "text a" } }, b: { title: { text: "text b" } } }; let test = {}; test["title"] = {}; test.title["text"] = {}; Object.keys(obj).forEach((key) => { test.title.text[key] = `text ${key}`; }); console.log(test);