我有一个数组
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]]
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)
in_groups_of
方法,它会为nil
创建空元素。比如说,若你使用arr = [0,1,2,3,4]
和 in_groups_of(3)
一起使用,则结果为[[0,1,2],[3,4,nil]]
。在某些情况下,这可能会造成麻烦。 - Penguinfoo.in_groups_of(2, false)
,它不会用nil
元素填充。 - Canuk
t = []; d.each_slice(3) {|s| t << s}
,... 为什么我没有尝试 #to_a 呢,谢谢朋友。 - Dorianfoo.each_slice(3).each_with_index { |f, i| puts "#{f}, #{i}" }
的方法来按块(或“片段”)处理数组。 - user664833