Reputation: 73
What the best way to merge objects in an array using a key?
[
{
"refr": "https://example.com/",
"transactions": 1
},
{
"refr": null,
"pageviews": 1
},
{
"refr": "https://example.com/",
"pageviews": 1
}
]
Desired Result using 'refr' key:
[
{
"refr": "https://example.com/",
"transactions": 1,
"pageviews": 1
},
{
"refr": null,
"pageviews": 1
},
]
I am looking for a solution that does NOT use any third party tools, like lodash.
Upvotes: 1
Views: 44
Reputation: 10194
Using Array.prototype.reduce
, you can group values by the refr
key.
const input = [
{
"refr": "https://example.com/",
"transactions": 1
},
{
"refr": null,
"pageviews": 1
},
{
"refr": "https://example.com/",
"pageviews": 1
}
];
const groupByRefr = input.reduce((acc, cur) => {
acc[cur.refr] ? acc[cur.refr] = { ...acc[cur.refr], ...cur } : acc[cur.refr] = cur;
return acc;
}, {});
const result = Object.values(groupByRefr);
console.log(result);
Upvotes: 3