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

154
Views
sum of same keys of an array objects to produce new object

I have an array object:

const data = [
  { label: 'P', value: 13 },
  { label: 'P', value: 7 },
  { label: 'Q', value: 15 },
  { label: 'Q', value: 8 },
  { label: 'Q', value: 1 },
  { label: 'R', value: 5 },
  { label: 'S', value: 6 }
]

I need to produce an object which keeps the sum of the value for each key. So,the output will be:

{P: 20, Q: 24, R: 5, S: 6}

I am struggling to generate the output.

const data = [
  { label: 'P', value: 13 },
  { label: 'P', value: 7 },
  { label: 'Q', value: 15 },
  { label: 'Q', value: 8 },
  { label: 'Q', value: 1 },
  { label: 'R', value: 5 },
  { label: 'S', value: 6 }
]

const customData = data.reduce((acc, cur) => {
    let common = acc.length > 0 && acc.filter(item => item.label === cur.label)
    if (common) {
        common.value += cur.value
    } else {
        
    }
    return acc
}, {})

console.log(customData)
// expected output {P: 20, Q: 24, R: 5, S: 6}

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

0

Check to see if the key exists. If it doesn't set it to zero, and add the value to it. Otherwise add the value.

const data = [
  { label: 'P', value: 13 },
  { label: 'P', value: 7 },
  { label: 'Q', value: 15 },
  { label: 'Q', value: 8 },
  { label: 'Q', value: 1 },
  { label: 'R', value: 5 },
  { label: 'S', value: 6 }
]

const customData = data.reduce((acc, cur) => {

    // Destructure the label and value from the object
    const { label, value } = cur;

    // If the label isn't present as a key on
    // the accumulator, set its value to zero, and then
    // add the value from the current object,
    // otherwise just add the value.
    acc[label] = (acc[label] || 0) + value;

    return acc;

}, {})

console.log(customData);

about 4 years ago · Juan Pablo Isaza Report

0

create data json to parse, add the symbolic data into an array for find what you wanted. add (like you want) += to a number array at position 1 when the position 0 was expected in the same name...

    const dataParse = `{ "data" : [
      { "label": "P", "value": 13},
      { "label": "P", "value": 7 },
      { "label": "Q", "value": 15},
      { "label": "Q", "value": 8 },
      { "label": "Q", "value": 1 },
      { "label": "R", "value": 5 },
      { "label": "S", "value": 6 }
            ]}`;  
              
              
            var unique = [];
    var data = JSON.parse(dataParse);
    unique.push([data.data[0].label])
    unique[0].push(data.data[0].value)
    
    for (a = 1; a < data.data.length; a++) {
    for (a2 = 0; a2 < unique.length; a2++) {
    if (unique[a2][0] == data.data[a].label && a2 != a) {
    unique[a2][1] += data.data[a].value;
    break;
    }
    if (a2 == unique.length-1) {
    unique.push([data.data[a].label, data.data[a].value])
    break;
    }
    }
    }
    
    for (b = 0; b < unique.length; b++) {
    console.log(unique[b][1]);
    }  
              
              

  unique[0] give the name and [1] give solution
          
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!