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

179
Views
Merging elements in my SQL query result Array with Javascript

As a newbie, I'm looking for the best approach to achieve the below:

Here is the Array I get from my DB query that contains a left join on the "class" table

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

And I would like to get something like this:


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

Thanks a lot for your suggestions. I'm using Sequelize in this project but I'm writing raw queries as I find it more convenient for my DB model.

Regards, Nico

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

0

You can group your array items based on legnumber using array#reduce and then get all the values to create your result using 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

Hassan's answer is the more concise way to handle this, but here is a more verbose option to help understand what's happening:

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!