ActiveSupport - Array#in_groups
> (1..10).to_a.in_groups(3, false) {|group| p group}
[1, 2, 3, 4]
[5, 6, 7]
[8, 9, 10]
=> [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Rubyのeach_slice
などで簡単にできるかと思ったが、なかなかできなくて調べたらRailsにあった。
第2引数で指定したもので、余った枠が埋められる(デフォルトの省略時はnil
)
false
指定だと余った枠を埋めない
Rubyのeach_slice
は違う
> (1..10).each_slice(3).to_a
=> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
> (1..10).each_slice(4).to_a
=> [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]
参考:StackOverflow - Splitting an array into equal parts in ruby
今回のユースケースとしては、HTML上で3列表示のulに配列要素を分けるのに使った。