Rubyで配列をある要素数ごとに分割する場合はEnumerable#each_slice
が利用できる。
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].each_slice(3){|part|
p part
}
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]
ブロックを与えない場合は、Enumerator
が返る。もし配列の配列が必要ならto_a
してやれば良い。
p [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].each_slice(3).to_a
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]