I have the following array I need help with.
let test = [
{
date: ["2021-11-09", "2021-11-09", "2021-11-10", "2021-11-10"],
amount: [0.5, 0.5, 1, 2],
}];
How can I merge the amounts that have the same date? I want the data to be returned as below:
date: ["2021-11-09", "2021-11-10"],
amount: [1, 3],
Thank you in advance!
>Solution :
As mentioned in the comments, this is just a ‘group by’ by date from the date array, summing the elements at the same index in the amount array.
let test = [
{
date: ['2021-11-09', '2021-11-09', '2021-11-10', '2021-11-10'],
amount: [0.5, 0.5, 1, 2],
},
];
const result = test.map(({ date, amount }) => {
const grouped = date.reduce((a, d, i) => a.set(d, (a.get(d) ?? 0) + amount[i]), new Map());
return {
date: [...grouped.keys()],
amount: [...grouped.values()],
};
});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }