将数组拆分为x数组

Spu*_*uck 3 ruby arrays sorting

我有一个数组:

arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)

我想arr1分成x个切片,每个切片尽可能完整且相等.

arr2  = arr1.foo(3)
# => [1, 2, 3, 4][5, 6, 7][8, 9, 10]
Run Code Online (Sandbox Code Playgroud)

each_slice 与我想要的相反,将数组分成x个元素组.

arr2 = arr1.each_slice(3)
# => [1, 2, 3][4, 5, 6][7, 8, 9][10]
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想在不使用特定于rails的方法的情况下执行此操作in_groups.

und*_*gor 6

class Array
  def in_groups(n)
    len, rem = count.divmod(n)
    (0...n).map { | i | (i < rem) ? self[(len+1) * i, len + 1] : self[len * i + rem, len] }
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 你可以在这里使用`len,rem = count.divmod(n)` (2认同)