Задать вопрос
ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как сделать равномерное слияние многомерного массива?

Имеется многомерный массив с 3 массивами которые нужно объединить в один массив по их индексу со смещением
К примеру в многомерном массиве находятся 3 таких массива (не числовых)
Первый массив
[1, 2, 3, 4]
Второй массив
[5, 6, 7, 8]
Третий массив
[9, 10, 11]

Как их слить в один в таком порядке
[1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8]
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Кого надо объединить:

const arrs = [
  [ 1, 2, 3, 4 ],
  [ 5, 6, 7, 8 ],
  [ 9, 10, 11 ],
];

Объединяем:

const result = [];
const max = Math.max(...arrs.map(n => n.length));
const index = Array(arrs.length).fill(0);

for (let i = 0; i < max; i++) {
  for (let j = 0; j < index.length; j++) {
    if (index[j] < arrs[j].length) {
      result[result.length] = arrs[j][index[j]++];
    }
  }
}

или

const result = arrs
  .reduce((acc, arr) => (
    arr.forEach((n, i) => (acc[i] ??= []).push(n)),
    acc
  ), [])
  .flat();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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