const repack = arr => {
const result = [...new Array(1 + Math.floor((arr.length - 1) / 2.5))].map(() => []);
arr.forEach((el, i) => result[Math.floor(i / 2.5)].push(el));
return result;
}
JSON.stringify(repack([1, 2, 3, 4, 5, 6, 7, 8, 9]))
// "[[1,2,3],[4,5],[6,7,8],[9]]"
Здесь несколько моментов, которые ещё пригодятся в других задачах:
- Создание массива нужно длины с заполнением начальными значениями
[...new Array(length)].fill(value) // тут не годится, т.к. заполняем пустыми массивами
// и чтобы это не был один и тот же массив («передача по ссылке»)
// заполняем другим способом, через map()
[...new Array(length)].map(() => [])
- получение чередующегося ряда
3, 2, 3, 2, ...
через Math.floor(i / 2.5)