@ParaBellum577

Как соединить 2 массива чередуя элементы через 5?

Есть 2 массива, как можно сделать слияние таким образом, чтобы элементы чередовались каждый 5-й?
const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
  const b = ["a", "b", "c", "d"];

На выходе должно быть вот так.
const с = [ "a", 1, 2, 3, 4,5, "b",6, 7, 8, 9, 10, "c",11, 12, 13, 14, 15, "d"];

Есть вот такая функция, однако она модифицирует исходные массивы, такой вариант не подходит, очень много данных надо перебирать.
const merge = (b, a) => {
            for (var i = 0; a.length; ) b.splice(i++ * 5, 0, a.shift());
            return b;
          }

Если есть вариант решения с использованием _lodash, будет круто)
  • Вопрос задан
  • 233 просмотра
Решения вопроса 1
@Sun_Day
const step = 5;
const c = [];
for (let x = 0, y = 0; x <= a.length; x += step, y += 1) {
    c.push(...a.slice(x - step, x).concat(b[y]));
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F Куратор тега JavaScript
arr2.flatMap((n, i) => [ n, ...arr1.slice(i * 5, (i + 1) * 5) ])

Если есть вариант решения с использованием _lodash, будет круто

_.flatten(_.zipWith(arr2, _.chunk(arr1, 5), (a, b) => [ a, ...(b ?? []) ]))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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