首页 > 解决方案 > 将数组中的重复对象合并到一个对象中,该对象包含每个对象的出现次数

问题描述

我有一个包含产品列表的数组,每个产品都有两个数组:一个补充剂和一个选项。我想将重复的产品合并到一个新数组中的一个对象中,并且我希望该对象包含新字段,即每个产品的数量(出现次数)。重复产品是具有相同名称、补充和选项的产品。我找不到做这些事情的正确方法。这是我拥有的数组:

[
 {
  productId: 5eaaec0povjedeojej83,
  options: [ [Object], [Object], [Object], [Object] ],
  supplements: [ [Object], [Object], [Object] ],      
  totalPrice: 11.5,
  name: 'Menu Tacos',
  price: 11.5,
 
 },
{
 productId: 5eaafcsefesfsefsefc,
 options: [ [Object], [Object], [Object] ],
 supplements: [],
 totalPrice: 15,
 name: 'Menu sandwichs',
 price: 7.5,

}
  {
  productId: 5eaaec0efjejfzzefc8ldoe,
  options: [ [Object], [Object], [Object], [Object] ],
  supplements: [ [Object], [Object], [Object] ],      
  totalPrice: 11.5,
  name: 'Menu Tacos',
  price: 11.5,

 },
]

假设产品 1 和 3 具有相同的选项和补充,我想简单地显示 x2 菜单炸玉米饼:(菜单炸玉米饼的补充和选项),x1 菜单三明治:(菜单的补充和选项)我想到的解决方案是我将重复项合并到一个对象中并向其添加数量,因此我想要得到的结果是:

[
 {
  producName: 'Menu Tacos',
  options: [ [Object], [Object], [Object], [Object] ],
  supplements: [ [Object], [Object], [Object] ],      
  totalPrice: 11.5,
  name: 'Menu Tacos',
  price: 11.5, 
  quantity:2
 },
{
 productName:'Menu sandwichs' ,
 options: [ [Object], [Object], [Object] ],
 supplements: [],
 totalPrice: 15,
 name: 'Menu sandwichs',
 price: 7.5,
 quantity:1
}
 
]

所以有人可以帮助我吗?

标签: javascriptarraysmergeduplicates

解决方案


推荐阅读