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

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

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

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. Поэтому, прежде чем люди начнут пытаться ответить на ваш вопрос, пожалуйста, отредактируйте его и объясните, каков ваш ожидаемый результат.

Gerardo Furtado 07.06.2019 07:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Вы можете использовать уменьшать и проверить, содержит ли объект 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 07.06.2019 07:54

@Shubh Что означает изменение контекста ответа в этом случае?

sandrooco 07.06.2019 08:02

Когда я проголосовал за ответ, он работал правильно, после того, как вы отредактировали его, он начал давать Нэн, я не совсем видел, что вы отредактировали @sandrooco

Shubh 07.06.2019 08:03

@brk, я думаю, вопрос задает массив, и ваш результат возвращает объект, возможно, пользователю нужны два тусклых массива?

Shubh 07.06.2019 08:06

1. Редактирование какого-то другого чувака дало NaN. 2. Вы можете увидеть все изменения, нажав «отредактировано x минут назад». 3. Про контекст ничего нет, он просто не работает должным образом. 4. Я полагаю, @Kate нужен объект, чтобы знать о ключах категорий.

sandrooco 07.06.2019 08:07

Другие вопросы по теме