Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
Manipulación de datos en un formato diferente

Logré crear una consulta para obtener algunos datos de la base de datos usando el siguiente script:

 app.get("/diseases", async (req, res) => { const rows = await process.postgresql.query( "SELECT ds.disease, ds.symptom FROM diseases ds" ); console.log(rows); res.status(200).send(JSON.stringify(rows)); });

Los datos vienen en el siguiente formato:

 [ { disease: ' boală hipertensivă', symptom: ' durere toracică' }, { disease: ' boală hipertensivă', symptom: ' respirație întretăiată' }, { disease: ' boală hipertensivă', symptom: ' amețeală' }, { disease: ' boală hipertensivă', symptom: ' astenie' }, { disease: ' boală hipertensivă', symptom: ' toamnă (Fall)' }, { disease: ' boală hipertensivă', symptom: ' sincopă' }, { disease: ' diabet', symptom: ' poliurie' } ]

Mi pregunta es cómo transformar estos datos en un formato, como el siguiente:

 {"Hypertensive disease": ["Pain chest", "Shortness of breath", "Dizziness", "Asthenia", "Fall", "Syncope", "Vertigo", "Sweat", "Sweating increased", "Palpitation", "Nausea", "Angina pectoris", "Pressure chest"], "Diabetes": ["Polyuria"]}
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Está intentando agrupar y transponer los datos. La mejor manera es usar la función .reduce() en la matriz. Aquí hay un ejemplo:

 const arr = [ { disease: "boală hipertensivă", symptom: " durere toracică" }, { disease: "boală hipertensivă", symptom: " respirație întretăiată" }, { disease: "boală hipertensivă", symptom: " amețeală" }, { disease: "boală hipertensivă", symptom: " astenie" }, { disease: "boală hipertensivă", symptom: " toamnă (Fall)" }, { disease: "boală hipertensivă", symptom: " sincopă" }, { disease: "diabet", symptom: " poliurie" } ]; console.log(arr.reduce((group, row) => { // Check if disease group has the disease if (typeof group[row.disease] === "undefined") { // Initialise an array. group[row.disease] = []; } // Push the symptoms. group[row.disease].push(row.symptom.trim()); // return the updated group. return group; }, {}));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

Para la entrada dada arriba, obtengo esta respuesta:

 { "boală hipertensivă": [ "durere toracică", "respirație întretăiată", "amețeală", "astenie", "toamnă (Fall)", "sincopă" ], "diabet": [ "poliurie" ] }
about 4 years ago · Juan Pablo Isaza Denunciar

0

return rows.reduce((acc, item) => { if (!!acc[item.disease]) acc[item.disease].push(item.symptom); else acc[item.disease] = [item.symptom]; return acc; }, {})

La función de reduce toma dos parámetros: una función de procesamiento de iteración, que acumula un resultado, y un resultado inicial (ponemos como resultado inicial un objeto vacío {} ).

El procesador de iteración tiene dos parámetros: el objeto acumulador acc y el item actual, y debe devolver un objeto acumulador nuevo (o modificado).

En cada iteración, nuestra función verifica si acc ya tiene un campo con el valor de 'enfermedad'. Si no es así, crea este campo y coloca 1 matriz de elementos [item.symptom] dentro. Si el campo ya existe, envía un síntoma a esa matriz. Después de procesar los datos, obtenemos el objeto con enfermedades como claves y matrices de sus síntomas como valores.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda