Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

181
Views
Fusionar elementos en mi matriz de resultados de consulta SQL con Javascript

Como novato, estoy buscando el mejor enfoque para lograr lo siguiente:

Aquí está la matriz que obtengo de mi consulta de base de datos que contiene una combinación izquierda en la tabla de "clase"

 [ {"legnumber":1, "classcode" : "J"}, {"legnumber":1, "classcode" : "Y"}, {"legnumber":2, "classcode" : "J"} ]

Y me gustaría obtener algo como esto:

 { "legs": [ { "legnumber" : 1, "classes" : [ {"classcode" : "J"}, {"classcode" : "Y"} ] }, { "legnumber" : 2, "classes" : [ {"classcode" : "J"} ] } ] }

Muchas gracias por tus sugerencias. Estoy usando Sequelize en este proyecto, pero estoy escribiendo consultas sin procesar porque me resulta más conveniente para mi modelo de base de datos.

Saludos, nico

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede agrupar los elementos de su matriz según el número de legnumber usando array#reduce y luego obtener todos los valores para crear su resultado usando Object.values() .

 const arr = [ {"legnumber":1, "classcode" : "J"}, {"legnumber":1, "classcode" : "Y"}, {"legnumber":2, "classcode" : "J"} ], output = arr.reduce((r, {legnumber, classcode}) => { r[legnumber] ??= {legnumber, classes: []}; r[legnumber].classes.push({classcode}); return r; },{}), result = {legs: Object.values(output)}; console.log(result);

about 4 years ago · Juan Pablo Isaza Report

0

La respuesta de Hassan es la forma más concisa de manejar esto, pero aquí hay una opción más detallada para ayudar a comprender lo que está sucediendo:

 const queryResults = [ { legnumber: 1, classcode: 'J' }, { legnumber: 1, classcode: 'Y' }, { legnumber: 2, classcode: 'J' }, ] // create an object to store the transformed results const transformedResults = { legs: [], } // loop through each item in the queryResult array for (const result of queryResults) { // try to find an existing leg tha matches the current leg number let leg = transformedResults.legs.find((leg) => leg.legnumber === result.legnumber) // if it doesn't exist then create it and add it to the transformed results if (!leg) { leg = { legnumber: result.legnumber, classes: [], } transformedResults.legs.push(leg) } // push the classcode leg.classes.push({ classcode: result.classcode }) } console.log(transformedResults)

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!