Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

231
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda