Tengo el siguiente código de datos. Es un objeto y cada clave tiene una fecha. Hay propiedades Open y Closed dentro de él. Si Closed es 0, entonces esa propiedad no está presente.
let data = { "2021-09-06": { "Open": 24 }, "2021-09-07": { "Open": 80, "Closed": 14 }, }quiero lograr lo siguiente
let res = [ { "date": "2021-09-06", "Open": 24, "Closed": 0 }, { "date": "2021-09-07", "Open": 80, "Closed": 14 }, ] ¿Puede alguien decirme cómo lograr esto? Lo he intentado de esta manera, pero no obtengo la propiedad de date dentro del objeto como quiero.
Object.entries(data).map((e) => ( { [e[0]]: e[1] } ));Estás en el camino correcto.
Object.entries() devuelve una matriz de tuplas [key, value] , por lo que, en su caso, cada entrada se verá como ['2021-09-06', { Open: 24,}] .
Puede desestructurar esta tupla pasada en la llamada map() , lo que la hace más descriptiva.
Object.entries(data).map(([date, value]) => ... Luego puede usar la asignación abreviada para crear la propiedad de date , declarar una propiedad Closed: 0 predeterminada y luego usar la sintaxis extendida para aplicar las propiedades existentes del objeto de value que sobrescribirá la propiedad Closed si existe en el original.
let data = { '2021-09-06': { Open: 24, }, '2021-09-07': { Open: 80, Closed: 14, }, }; const result = Object.entries(data).map(([date, value]) => ({ date, Closed: 0, ...value })); console.log(result);