TypeScriptで配列をn個ずつに分割する

配列をn個ずつの二次元配列にするワンライナーです(Rubyeach_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化した形です)

qiita.com