Сложить одинаковые объекты js

//Приходит массив объектов

let numbers = [

{id: 9, category: "Зарплата", type: 'income', amount: 5000, date: '2023-10-20', comment: 'Оклад'},

{id: 10, category: "Подработка", type: 'income', amount: 500, date: '2023-10-14', comment: 'Фриланс'},

{id: 12, category: "Подработка", type: 'income', amount: 100, date: '2023-10-13', comment: 'Hello'},

{id: 8, category: "Зарплата", type: 'income', amount: 1000, date: '2023-10-11', comment: 'Аванс'}

];

//На выходе должно быть так

let numbers = [

{id: 9, category: "Зарплата", type: 'income', amount: 6000, date: '2023-10-20', comment: 'Оклад'},

{id: 10, category: "Подработка", type: 'income', amount: 600, date: '2023-10-14', comment: 'Фриланс'},

];

Запутался уже совсем, спасите, нужно сложить и убрать повторяющиеся объекты


Ответы (1 шт):

Автор решения: Андрей Наговицын

Решилось

const result = numbers.reduce((acc, curr) => {

    const found = acc.find(item => item.category === curr.category);
    if (found) {
        found.amount += curr.amount;
    } else {
        acc.push({...curr});
    }
    return acc;

}, []);


console.log(result)
→ Ссылка