Rubyで配列をある要素数ごとに分割するならArray#each_sliceを使おう
タグ: ruby / 初版公開: 2014-07-01

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]]