@scanmor

Как объект, состоящий из массивов значений свойств, преобразовать в массив объектов?

Есть объект:

{
  TX1: [   1  ,  2  ,  3   ],
  TX2: ["one", "two", "three" ],
  TX3: ["blue", "red", "green"]
}

Надо сделать массив:

[
 { 
   TX1: 1,
   TX2: "one",
   TX3: "blue"
 },
 { 
   TX1: 2,
   TX2: "two",
   TX3: "red"
 },
 { 
   TX1: 3,
   TX2: "three",
   TX3: "green"
 },
]

Проблема в том, что ключей может быть сколько угодно. И они могут иметь любые имена. Не получится обращаться к TX1, TX2, TX3. А если проходить циклом по ним, то как вообще обращаться ко всем остальным и их массивам?
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const arr = Object
  .entries(obj)
  .reduce((acc, [ k, values ]) => (
    values.forEach((v, i) => (acc[i] ??= {})[k] = v),
    acc
  ), []);

или

const keys = Object.keys(obj);
const arr = obj[keys[0]]?.map((_, i) => {
  return Object.fromEntries(keys.map(k => [ k, obj[k][i] ]));
}) ?? [];
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы