@partizzend

Как расширить и заполнить первый подмассив в массиве значениями остальных подмассивов?

Есть такой код:
let arr = [
  [
      [1, null, 1, 1],
      [2, 2, 2, 2],
      [3, 3, 3, 3]
  ],[
      [4, 4, 4, 4, 4 ,4],
      [5, 5, 5, 5],
      [6, 6, 6, 6, null],
      [7, 7, 7, 7],
      [8, 8]    
  ],[
      [9, 9, 9, 9],
      [10, 10, 10, 10],
      [11, 11, 11, 11, 11],
      [12, 12, 12, 12]   
  ],
];

let res = arr.reduce(function(accumulator, current) {
  current.forEach(function(item, i) {
    [].push.apply(accumulator[i] = accumulator[i] || [], [].concat(item.slice(accumulator[i].length)));                  
  }); 
  return accumulator;
}, []);

Первый подмассив расширяется на размер следующего подмассива, если тот больше. Результат такой:
let arr = [
  [1, null, 1, 1, 4, 4]
  [2, 2, 2, 2]
  [3, 3, 3, 3, null]
  [7, 7, 7, 7]
  [8, 8]
]

Как добиться такого же результата, но при этом null заполнять значениями следующего подмассива по совпадению индексов. Вот пример результата:
let arr = [
  [1, 4, 1, 1, 4, 4]
  [2, 2, 2, 2]
  [3, 3, 3, 3, 11]
  [7, 7, 7, 7]
  [8, 8]
]
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
arr.reduce((acc, el) => {
  el.forEach((n, i) => {
    acc[i] = acc[i] || [];
    n.forEach((m, j) => acc[i][j] = acc[i][j] || m);
  });

  return acc;
}, []);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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