首页 > 解决方案 > 合并javascript数组中的重复对象及其出现频率

问题描述

我有一个看起来像这样的 javascript 数组

       [
         { quantity: 1, name: 'Menu sandwichs' },
         { quantity: 1, name: 'Menu sandwichs' },
         { quantity: 1, name: 'Menu sandwichs' },
         { quantity: 1, name: 'Pizza' },
         { quantity: 1, name: 'Piza' }

      ]

我想得到这个数组

            [
             { quantity:3, name:'Menu Sandwich' },
             { quantity:2, name:'Pizza' }
            ]

你能帮帮我吗?

标签: javascriptarraysobjectduplicates

解决方案


假设原始数组中的数量有时可能不是 1:

const mergeQuantities = (values) => {
  const result = {}

  values.forEach(({ quantity, name }) => {
    result[name] = result[name] || { name, quantity: 0 }
    result[name].quantity += quantity
  })

  return Object.values(result)
}

这将创建一个新对象,其中属性名称name来自数组中的每个事物。然后遍历列表,将每个添加quantity到结果中。最后,它丢弃键,只留下您想要的形式的数组。


推荐阅读