Задать вопрос
@Gravio

Как массив объектов собрать в один объект, объединив одноимённые свойства в массивы?

На входе имеем массив:

[
  {
    "Duration": "30",
    "Average_Pulse": "80",
    "Max_Pulse": "120",
    "Calorie_Burnage": "240",
    "Hours_Work": "10",
    "Hours_Sleep": "7"
  },
  {
    "Duration": "30",
    "Average_Pulse": "85",
    "Max_Pulse": "120",
    "Calorie_Burnage": "250",
    "Hours_Work": "10",
    "Hours_Sleep": "7"
  },
  {
    "Duration": "45",
    "Average_Pulse": "90",
    "Max_Pulse": "130",
    "Calorie_Burnage": "260",
    "Hours_Work": "8",
    "Hours_Sleep": "7"
  }
]

На выходе надо получить следующий результат:

{
    "Duration": ["30", "30", "40"],
    "Average_Pulse": ["80", "85", "90"],
    "Max_Pulse": ["120", "120", "130"],
    "Calorie_Burnage": ["240", "250", "260"],
    "Hours_Work": ["10", "10", "8"],
    "Hours_Sleep": ["7", "7", "7"],
}

Стоить учесть следующие факторы:
1. Ключи в изначальном объекте динамичные
2. Количество строк в объекте динамичное
3. Если в каком-то объекте нет ключа и значения, который есть в изначальном, то проставляем нули
  • Вопрос задан
  • 133 просмотра
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const groupValues = (arr, defaultValue = null) =>
  arr.reduce((acc, n, i, a) => (
    Object.entries(n).forEach(([ k, v ]) =>
      (acc[k] ??= Array(a.length).fill(defaultValue))[i] = v
    ),
    acc
  ), {});


const result = groupValues(arr, 0);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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