Как получить массив объектов с уникальными значениями? - PullRequest
1 голос
/ 07 июня 2019

Как суммировать массив объектов с одинаковым значением ключа?

У меня есть этот массив:

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]

1 Ответ

2 голосов
/ 07 июня 2019

Ожидаемый вывод в массив невозможен, так как массив не будет поддерживать пару ключ / значение.Вы можете выбрать объект.

Вы можете использовать уменьшить и проверить, содержит ли объект 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.log(newData)
...