如何分割(块)一个Ruby数组成X元素的部分?

我有一个数组

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

我如何将其分割或“块”成更小的数组?

class Array
def chunk(size)
# return array of arrays
end
end


foo.chunk(3)
# => [[1,2,3],[4,5,6],[7,8,9],[10]]
142506 次浏览

看看可列举的# each_slice:

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

如果你正在使用rails,你也可以使用in_groups_of:

foo.in_groups_of(3)