I have an array of objects like below for example.
{name: \"Mc Donald\", quantity: 4, maleCount: 1, femaleCount: 0}
{name: \"KFC\", quantity: 9, maleCou
More functional/universal approach
const normalizeValue = (value) => value === undefined ? 0 : value
const sumUpProps = (props = []) => (a = {}, b = {}) => {
const result = {}
props.forEach((prop) => {
result[prop] = normalizeValue(a[prop]) + normalizeValue(b[prop])
})
return result
}
const data = [
{name: "Mc Donald", quantity: 4, maleCount: 1, femaleCount: 0},
{name: "KFC", quantity: 9, maleCount: 1, femaleCount: 0},
{name: "KFC", quantity: 9, maleCount: 1, femaleCount: 0},
{name: "Mc Donald", quantity: 4, maleCount: 0, femaleCount: 1},
{name: "KFC", quantity: 9, maleCount: 0, femaleCount: 1},
{name: "KFC", quantity: 9, maleCount: 1, femaleCount: 0},
{name: "KFC", quantity: 9, maleCount: 0, femaleCount: 1},
{name: "KFC", quantity: 9, maleCount: 0, femaleCount: 1}
]
const entries = {}
const sumObjects = sumUpProps(['quantity', 'maleCount', 'femaleCount'])
data.forEach((item) => {
const entry = entries[item.name] || {}
entries[item.name] = sumObjects(entry, item)
})
console.log(entries)