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

230
Views
Get sum of duplicate obj in a nested array object

I have an obj array like this:

[
  {
    "feeTypeTitle": "STORAGE",
    "itemFees": [
      {
        "idx": 0,
        "itemTitle": "Apple iPhone 11 128GB",
        "itemFee": 4,
        "feeType": "STORAGE"
      },
      {
        "idx": 1,
        "itemTitle": "Sony FWD-40WD650/T",
        "itemFee": 4,
        "feeType": "STORAGE"
      },
      {
        "idx": 1,
        "itemTitle": "Sony FWD-40WD650/T",
        "itemFee": 2,
        "feeType": "STORAGE"
      }
    ]
  },
  {
    "feeTypeTitle": "VERIFICATION",
    "itemFees": [
      {
        "idx": 0,
        "itemTitle": "Apple iPhone 11 128GB",
        "itemFee": 5,
        "feeType": "VERIFICATION"
      },
      {
        "idx": 1,
        "itemTitle": "Sony FWD-40WD650/T",
        "itemFee": 5,
        "feeType": "VERIFICATION"
      }
    ]
  }
]

You can see in STORAGE, there are 2 items that same title, idx number. I want to merge and sum the itemFee of these duplicates and return same array structure. The result I want is:

[
  {
    "feeTypeTitle": "STORAGE",
    "itemFees": [
      {
        "idx": 0,
        "itemTitle": "Apple iPhone 11 128GB",
        "itemFee": 4,
        "feeType": "STORAGE"
      },
      {
        "idx": 1,
        "itemTitle": "Sony FWD-40WD650/T",
        "itemFee": 6, // <- sum value
        "feeType": "STORAGE"
      }
    ]
  },
  {
    "feeTypeTitle": "VERIFICATION",
    "itemFees": [
      {
        "idx": 0,
        "itemTitle": "Apple iPhone 11 128GB",
        "itemFee": 5,
        "feeType": "VERIFICATION"
      },
      {
        "idx": 1,
        "itemTitle": "Sony FWD-40WD650/T",
        "itemFee": 5,
        "feeType": "VERIFICATION"
      }
    ]
  }
]

How do I do this with vanilla js, ES6?

Thank you for help

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

0

You can Array.prototype.map() your data array and to get the sum of duplicated objects in itemFees array just create a hash object itemFeesHash using Array.prototype.reduce() in order to keep the total sum of itemFee numeric property for all the objects with same idx

Code:

const data = [{feeTypeTitle: 'STORAGE',itemFees: [{idx: 0,itemTitle: 'Apple iPhone 11 128GB',itemFee: 4,feeType: 'STORAGE',},{idx: 1,itemTitle: 'Sony FWD-40WD650/T',itemFee: 4,feeType: 'STORAGE',},{idx: 1,itemTitle: 'Sony FWD-40WD650/T',itemFee: 2,feeType: 'STORAGE',},],},{feeTypeTitle: 'VERIFICATION',itemFees: [{idx: 0,itemTitle: 'Apple iPhone 11 128GB',itemFee: 5,feeType: 'VERIFICATION',},{idx: 1,itemTitle: 'Sony FWD-40WD650/T',itemFee: 5,feeType: 'VERIFICATION',},],},]

const result = data.map((o) => {
  const itemFeesHash = o.itemFees.reduce((a, c) => {
    a[c.idx] = a[c.idx] || { ...c, itemFee: 0 }
    a[c.idx].itemFee += c.itemFee
    return a
  }, {})
  o.itemFees = Object.values(itemFeesHash)
  return o
})

console.log(result)

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!