Pido ayuda para solucionar este problema. Solo me las arreglo para tratar casos especiales. Entrada: cualquier objeto JSON; objeto prototipo. Salida: objeto proyectado. La estructura del objeto proyectado será la intersección del objeto fuente y las estructuras del objeto prototipo. Los valores de las propiedades en el objeto proyectado serán los mismos que los valores de las propiedades respectivas en el objeto de origen. Por ejemplo:
const src = { prop11: { prop21: 21, prop22: { prop31: 31, prop32: 32 } }, prop12: 12 }; const proto = { prop11: { prop22: null } };Esta parte la pude hacer:
const res = (src, proto) => { return Object.keys(proto).reduce((a, e) => ({ ...a, [e]: src[e] ? (proto[e] ? res(src[e], proto[e]) : src[e]) : src[e] }), {}); } console.log(res(src, proto));Obtenemos el siguiente resultado:
{ "prop11": { "prop22": { "prop31": 31, "prop32": 32 } } }Pero si el proto es diferente, por ejemplo:
const proto = { prop11: {prop21: 1, prop23: null} };Esta solución da un resultado incorrecto. Pasé varios días en esta tarea ya. ¡Estaría agradecido por cualquier ayuda!