@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. Если в каком-то объекте нет ключа и значения, который есть в изначальном, то проставляем нули
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const keys = [...new Set(arr.flatMap(Object.keys))];

const result = arr.reduce((acc, n) => {
  keys.forEach(k => acc[k].push(n[k] ?? 0));
  return acc;
}, Object.fromEntries(keys.map(n => [ n, [] ])));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
XPOWER Одесса
от 3 000 до 5 500 $