Estoy tratando de convertir una lista de arreglos en otra modificando uno de los objetos dentro
let array1 = [ { name: "test", address: "testaddress", state: { 2022: { January: { month_state: "pending" }, }, }, }, { name: "test2", address: "testaddress2", state: { 2022: { January: { month_state: "pending" }, }, }, }, ];Y quiero convertirme en esto, ¿cuál es la forma correcta? Gracias.
let array2 = [ { name: "test", address: "testaddress", 2022: { January: { month_state: "pending" }, }, }, { name: "test2", address: "testaddress2", 2022: { January: { month_state: "pending" }, }, }, ];let array2 = array1.map(({ state, ...rest }) => ({ ...rest, ...state }))Este código servirá.
Hay varias formas de lograr lo que estás pidiendo.
Te mostraré usando el enfoque funcional con .map
let array1 = [ { name: "test", address: "testaddress", state: { 2022: { January: { month_state: "pending" } } } }, { name: "test2", address: "testaddress2", state: { 2022: { January: { month_state: "pending" } } } } ]; let array2 = array1.map((el) => { const tmp = { name: el.name, adress: el.adress }; // Here we iterate el.state, so we can extract each year. /* We need to dynamically generate a property name (each year). So we use a feature called "computed property names (ES2015)" */ for (const prop in el.state) { tmp[prop] = el.state[prop]; } return tmp; }); console.log(array2);También podría usar un bucle for, que también es un enfoque válido.