Как транспонировать массив объектов в TypeScript? - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть массив объектов, как показано ниже:

finalList = [
  [{name: john}, {name: max}, {name: rob}],
  [{id: 1}, {id: 2}, {id: 3}],
  [{gender: M}, {gender: F}, {gender: M}],
]

Мне нужно, чтобы массив транспонировался так:

finalList = [ 
  {name: john, id: 1, gender: M},
  {name: john, id: 1, gender: M},
  {name: john, id: 1, gender: M}
]

Фактический массив объекта находится во вложенном массиве. Пожалуйста, помогите мне направить транспонировать массив в TypeScript.

1 Ответ

0 голосов
/ 04 апреля 2020

Вот хороший функциональный способ. Предполагается, что каждый массив в finalList имеет одинаковую длину и одинаковые ключи (поэтому обработка ошибок не требуется).

const finalList = [
  [{name: "john"}, {name: "max"}, {name: "rob"}],
  [{id: 1}, {id: 2}, {id: 3}],
  [{gender: "M"}, {gender: "F"}, {gender: "M"}],
];

console.log(finalList);

// this is a trick to create an array of a specific size with unique objects inside it
// the fill is necessary to iterate over the holed array (https://stackoverflow.com/q/40297442/2178159)
// fill({}) won't work since it's a single object ref that will be shared
const results = new Array(finalList.length).fill(null).map(() => ({}));

finalList.forEach(group => {
  group.forEach((obj, i) => {
    Object.assign(results[i], obj);
  })
});

console.log(results);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...