Как суммировать массив объектов с одинаковым значением ключа?
У меня есть этот массив:
let arrData = [{ category: "Main Expenses", amount: 420 },
{ category: "Food", amount: 50 },
{ category: "Main Expenses", amount: 4530},
{ category: "Food", amount: 4520 },
{ category: "Main Expenses", amount: 4530 },
{ category: "Food", amount: 450 },
{ category: "Self Care", amount: 7540 },
{ category: "Child Care", amount: 4570 }]
И мне нужно получить массив с уникальными категориями, например:
[Main Expenses: 9480,
Food: 5020,
Self Care: 7540,
Child Care: 4570]



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ожидаемый результат в массиве невозможен, так как массив не поддерживает пару ключ-значение. Вы можете выбрать объект.
Вы можете использовать уменьшать и проверить, содержит ли объект key по названию категории. Если да, то добавьте сумму, в противном случае создайте ключ по имени категории и установите его значение на сумму
let arrData = [{
category: "Main Expenses",
amount: 420
},
{
category: "Food",
amount: 50
},
{
category: "Main Expenses",
amount: 4530
},
{
category: "Food",
amount: 4520
},
{
category: "Main Expenses",
amount: 4530
},
{
category: "Food",
amount: 450
},
{
category: "Self Care",
amount: 7540
},
{
category: "Child Care",
amount: 4570
}
]
let newData = arrData.reduce((acc, item) => {
acc[item.category] = acc[item.category] ?
acc[item.category] + item.amount :
item.amount;
return acc;
}, {});
console.info(newData)@sandrooco, пожалуйста, убедитесь, что вы не меняете контекст ответа при редактировании
@Shubh Что означает изменение контекста ответа в этом случае?
Когда я проголосовал за ответ, он работал правильно, после того, как вы отредактировали его, он начал давать Нэн, я не совсем видел, что вы отредактировали @sandrooco
@brk, я думаю, вопрос задает массив, и ваш результат возвращает объект, возможно, пользователю нужны два тусклых массива?
1. Редактирование какого-то другого чувака дало NaN. 2. Вы можете увидеть все изменения, нажав «отредактировано x минут назад». 3. Про контекст ничего нет, он просто не работает должным образом. 4. Я полагаю, @Kate нужен объект, чтобы знать о ключах категорий.
Ваш массив "так" не является допустимым JavaScript. Поэтому, прежде чем люди начнут пытаться ответить на ваш вопрос, пожалуйста, отредактируйте его и объясните, каков ваш ожидаемый результат.