const chunks = (a, size) =>
Array.from(
{length: Math.ceil(a.length / size)},
(_, i) => a.slice(i * size, i * size + size)
);
const array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
console.log(chunks(array, 3));
console.log(chunks(array, 2));
forとかwhileとかreduceで条件分岐するのは、なんだろう読みづらいです。個人的な感想です
参考