【问题标题】:Iterate and sum two different array of objects and return new array- JS迭代和求和两个不同的对象数组并返回新数组-JS
【发布时间】:2020-10-23 00:31:04
【问题描述】:

是否可以将数组对象中的两个不同对象相加并返回单个对象数组?

let source= [{
  "supplimentKing": [{
    "pwdrName": "zzzzz",
    "pwdrPrice": "2"
  }],
  "protinsAddonOffer": [{
    "pwdrName": "oooo",
    "pwdrPrice": "3"
  }]
}];

结果:

[{
  "pwdrName": "zzzzz + oooo",
  "pwdrPrice": "5"
}]

在尝试了解类似的SO 1SO 2SO 3 之后,我无法理解如何获得预期的结果。

有人可以帮助我如何以干净的方式总结属性吗?

谢谢

【问题讨论】:

  • 您想将数组中的所有对象合并为一个值/对象吗?
  • 这只需要一个for 循环和parseInt() - 那么到目前为止你有什么尝试自己解决这个问题?
  • @Andreas ,首先我尝试过滤价格 n 名称,然后通过将它们相加来减少它
  • 是的...@Nithish
  • 为什么是.filter()? o.O 只需遍历元素

标签: javascript ecmascript-6


【解决方案1】:

您可以使用 reduce 来添加值

let source= [{
  "supplimentKing": [{
    "pwdrName": "zzzzz",
    "pwdrPrice": "2"
  }],
  "protinsAddonOffer": [{
    "pwdrName": "oooo",
    "pwdrPrice": "3"
  }],
  "proAddonOffer": [{
    "pwdrName": "iiiii",
    "pwdrPrice": "3"
  }]
}];

p=[]
  source.forEach((o)=>{
    p.push(...Object.values(o))
  })
  v=p.flat()
total= v.reduce((acc,curr)=>{
  acc= [{"pwdrName":curr.pwdrName+"+"+acc.pwdrName,"pwdrPrice":Number(curr.pwdrPrice)+Number(acc.pwdrPrice)}]
  return acc[0]

})
console.log([total])

【讨论】:

    猜你喜欢
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    相关资源
    最近更新 更多