I have an array

foo = %w(1 2 3 4 5 6 7 8 9 10) 

How can I split or "chunk" this into smaller arrays?

class Array def chunk(size) # return array of arrays end end foo.chunk(3) # => [[1,2,3],[4,5,6],[7,8,9],[10]] 
0

2 Answers

Take a look at Enumerable#each_slice:

foo.each_slice(3).to_a #=> [["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"], ["10"]] 
3

If you're using rails you can also use in_groups_of:

foo.in_groups_of(3) 
5