No sé si la pregunta es correcta, pero quiero hacer lo siguiente, quiero que las propiedades de "variable" se conviertan en parte de la variable día.
Siendo el objeto el siguiente: {seg: 60, min:1, dias: 7, semana: 1}
Quedando el objeto de la siguiente manera: Tenga en cuenta que el objeto dentro del objeto puede ser cualquiera y no tiene por qué ser la propiedad "variable" por lo que me gustaría dinamizarla, por lo que un arreglo como delete dia. variable y luego fusionar no me serviría.
Con el código que os muestro solo he conseguido que el resultado sea: {seg: 60, min:1, variable:{dias: 7, semana: 1}, dias: 7, semana: 1}
Cualquier idea sobre cómo podría hacerlo de manera más eficiente y, sobre todo, hacerlo.
const dia = {seg: 60, min:1, variable:{dias: 7, semana: 1}} let varia = {} let newDia = {} const processJson = () => { Object.entries(dia).map(([name, value]) => { if(typeof(value) === 'object'){ varia = value newDia = {...dia, ...variable} } }) } processJson()
Este es un método universal para alisar cualquier objeto con 2 niveles de profundidad. Utiliza el método de reduce
de matriz y la función Object.keys()
:
const dia = { seg: 60, min: 1, variable: {dias: 7, semana: 1} } function flatObject(o) { return Object.keys(o).reduce((result, key) => { // If there is a nested object, flat the object if (typeof o[key] === 'object' && ! Array.isArray(o[key]) && o[key] !== null) { for (const inKey in o[key]) { result[inKey] = o[key][inKey]; } } // Just copy the value else { result[key] = o[key]; } // Return accumulator return result; }, {}); } console.log(flatObject(dia))
Comience usando una asignación de desestructuración para extraer las propiedades seg
, min
y variable
del objeto dia
.
const { seg, min, variable } = dia;
Luego cree un nuevo objeto en el que establezca las propiedades seg
y min
con las propiedades desestructuradas. Para la propiedad de la variable
, use la sintaxis extendida para colocar las propiedades de la variable
dentro del mismo objeto.
const result = { seg, min, ...variable };
const dia = { seg: 60, min: 1, variable: { dias: 7, semana: 1 } }; const { seg, min, variable } = dia; const result = { seg, min, ...variable }; console.log(result);