将阵列分成m组的n组?

时间:2011-10-26 18:44:25

标签: ruby arrays

  

可能重复:
  Need to split arrays to sub arrays of specified size in Ruby

我正在寻找一个数组 - 比如说[0,5,3,8,21,7,2] - 然后产生一个数组数组,分成很多地方。如果上面的数组设置为a,那么

a.split_every(3)

会返回[[0,5,3],[8,21,7] [2]]

这是否存在,还是我必须自己实施?

2 个答案:

答案 0 :(得分:104)

使用Enumerable#each_slice

a.each_slice(3).to_a

或者,迭代(而不是为了保持数组而烦恼):

a.each_slice(3) do |x,y,z|
  p [x,y,z]
end

答案 1 :(得分:17)

a = (1..6).to_a
a.each_slice(2).to_a # => [[1, 2], [3, 4], [5, 6]]
a.each_slice(3).to_a # => [[1, 2, 3], [4, 5, 6]]
a.each_slice(4).to_a # => [[1, 2, 3, 4], [5, 6]]