配列をn個ずつの二次元配列にするワンライナーです(Rubyの each_slice
的なやつ)
使い古されたネタなので、いろんな書き方が可能だと思いますが…。
const arraySplit = <T = object>(array: T[], n: number): T[][] => array.reduce((acc: T[][], c, i: number) => (i % n ? acc : [...acc, ...[array.slice(i, i + n)]]), []);
使い方はこんな感じ。
const result = arraySplit<number>([1, 2, 3, 4, 5], 2); // <- [[1, 2], [3, 4], [5]]
JS版として、以下のQiita記事にあるコメントを参考にさせていただきました(実質、それをTypeScript化した形です)