Tengo debajo de la matriz de objetos con cada objeto que tiene un atributo de projects que además tiene su matriz de objetos.
const data = [ { "title": "Release", "projects": [ { "name": "Server", "result": { "success": 0, "failure": 100 }, } ] }, { "title": "Payments", "projects": [ { "name": "Platform1", "result": { "success": 100, "failure": 0 } }, { "name": "Platform2", "result": { "success": 50, "failure": 50, } } ] } ] Quería iterar a través de él y obtener el resultado de la siguiente manera. el name no es más que la concatenación del title y el name de los datos anteriores.
const result = [ { name: 'Release-Server', success: 0, failure: 100, }, { name: 'Payments-Platform1', success: 100, failure: 0, }, { name: 'Payments-Platform2', success: 50, failure: 5, }, ];Probé las siguientes formas, pero no pude averiguar cómo obtener exactamente el resultado como se muestra arriba. ¿Puede alguien por favor ayudar en esto?
data.forEach(prj => { prj.projects.forEach((project) => { // unable to get how to push these details into a new array of object }) });Puede hacer lo siguiente (asegúrese de agregar controles para referencias nulas/indefinidas)
const data = [{ "title": "Release", "projects": [{ "name": "Server", "result": { "success": 0, "failure": 100 }, }] }, { "title": "Payments", "projects": [{ "name": "Platform1", "result": { "success": 100, "failure": 0 } }, { "name": "Platform2", "result": { "success": 50, "failure": 50, } } ] } ]; const result = data.flatMap(item => item.projects.map(project => ({ name: `${item.title}-${project.name}`, success: project.result.success, failure: project.result.failure }))); console.log(result);Primero debe usar flatMap porque cambiará la cantidad de elementos (comienza con 2, termina con 3) y dentro de un map simple para convertir 1: 1 cada proyecto en su objeto final.
const data = [{ "title": "Release", "projects": [{ "name": "Server", "result": { "success": 0, "failure": 100 }, }] }, { "title": "Payments", "projects": [{ "name": "Platform1", "result": { "success": 100, "failure": 0 } }, { "name": "Platform2", "result": { "success": 50, "failure": 50, } } ] } ]; var groupedData = data.flatMap((el) => el.projects.map((proj) => ({ name: el.title + "-" + proj.name, success: proj.result.success, failure: proj.result.failure, })) ); console.log(groupedData);