Estoy tratando de remodelar algunos datos para usarlos en una tabla. Para hacer esto, estoy mapeando una matriz y luego recorriendo un objeto dentro de ella para crear un nuevo objeto con los datos que quiero en él. El problema que tengo es que si el objeto contiene más de un objeto dentro, solo obtengo un objeto nuevo para el primer elemento.
Estoy tratando de obtener un nuevo objeto para cada uno de los objetos contenidos dentro changedProperties
¿Alguien puede ayudar? / ¿Explique?
Aquí hay un ejemplo de trabajo:
const MOCK_DATA = [ { triggeredByID: "d5ae18b7eb6f", triggeredByName: "name", changedProperties: { LastName: { __oldValue: "Mallory", __newValue: "Mallorie", }, Suffix: { __oldValue: "DO", __newvValue: "NP", }, }, createdAt: "2022-06-01T10:20:21.329337652Z", }, { triggeredByID: "d5ae18b7eb6f", triggeredByName: "John", changedProperties: { State: { __oldValue: ["TX", "AL"], __newValue: ["TX", "AL", "FL"], }, City: { __oldValue: "Austin", __newValue: "San Antonio", }, }, createdAt: "2022-06-01T10:20:21.329337652Z", }, ]; const changedProperties = MOCK_DATA.map((item, idx) => { for (const [key, value] of Object.entries(item.changedProperties)) { return { field: key, old: item.changedProperties[key].__oldValue, new: item.changedProperties[key].__newValue, name: item.triggeredByName, createdAt: item.createdAt, }; } }); console.log(changedProperties)Sí, si regresa dentro de un bucle for, su ámbito es la función. Lo que significa que regresará de la función completa en la primera iteración de su ciclo. Prueba esto en su lugar:
const changedProperties = MOCK_DATA.map((item, idx) => { return Object.entries(item.changedProperties).map(([key, value]) => { return { field: key, old: item.changedProperties[key].__oldValue, new: item.changedProperties[key].__newValue, name: item.triggeredByName, createdAt: item.createdAt, }; } }); console.log(changedProperties)