@DaniilRuss

Как из массива получить объект у которого первое свойство будет массив уникальных labels, a второе массив value?

C сервера прилетает такой ответ:

{
   "results": [
     {
       id: 1,
       data: [
                  {
                     name: 'Egor',
                     value: 10
                  },
                  {
                     name: 'Ivan',
                     value: 1
                  },
                ]
     },
     {
       id: 1,
       data: [
                  {
                     name: 'Egor',
                     value: 2
                  }
                ]
     }
 }

Нужно из него получить объект, у которого первое свойство будет labels c уникальными именами (['Egor', 'Ivan']), а второе - сумма value для каждого labels ([12, 1]):

personInfo = {
    labels: ['Egor', 'Ivan'],
    values: [12, 1]
}
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
const computed = results.reduce(
    (acc, item) => (item.data.forEach(({ name, value }) => (acc[name] = (acc[name] ?? 0) + value)), acc),
    {}
);
const personInfo = {
    labels: Object.keys(computed),
    values: Object.values(computed)
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы