将一个数组分割成多个子数组

8

可能是重复问题:
如何将Ruby数组拆分(分块)为X个元素的部分?

我想要将一个数组拆分成子数组的数组。

例如,

big_array = (0...6).to_a

我们如何将这个大数组拆分成数组的数组(每个数组最多包含2个项目),例如:
arrays = big_array.split_please(2)

Where...

arrays # => [ [0, 1],
              [2, 3],
              [4, 5] ]

注意: 我问这个问题,是因为为了做到这一点,我目前的编码方式如下:

arrays = [
           big_array[0..1],
           big_array[2..3],
           big_array[4..5]
         ]

...这段代码非常丑陋,而且难以维护,特别是当big_array.length > 100时。

2个回答

17
你可以在数组上使用#each_slice方法。
big_array = (0..20).to_a
array = big_array.each_slice(2).to_a
puts array # [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10, 11], [12, 13], [14, 15], [16, 17], [18, 19], [20]]

1
它与我的slice有什么不同呢? :) - tolitius
谢谢,非常完美。我要认真学习Ruby的API o_o; - Zag zag..

6

看看这个切片功能:

big_array.each_slice( 2 ).to_a

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接