【发布时间】:2015-06-11 12:11:57
【问题描述】:
我有一个数组:
array = [12, 13, 14, 18, 17, 19, 30, 23]
我需要将此数组拆分为每个最多三个元素的数组:
[12, 13, 14] [18, 17, 19] [30, 23]
我该怎么做?
【问题讨论】:
-
这个问题已经被问过了。这是一个链接:stackoverflow.com/questions/2699584/…
我有一个数组:
array = [12, 13, 14, 18, 17, 19, 30, 23]
我需要将此数组拆分为每个最多三个元素的数组:
[12, 13, 14] [18, 17, 19] [30, 23]
我该怎么做?
【问题讨论】:
试试这个...
使用Enumerable#each_slice 对数组 x 值进行切片
array = [12, 13, 14, 18, 17, 19, 30, 23]
array.each_slice(3)
array.each_slice(3).to_a
【讨论】:
看看 Enumerable#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)
【讨论】:
到这个时候,我希望你得到你的答案。如果您使用的是 Rails,则可以使用 in_groups,然后您不必显式调用 to_a:
array.in_groups(3)
# => [[12, 13, 14], [18, 17, 19], [30, 23, nil]]
array.in_groups(3, false)
# => [[12, 13, 14], [18, 17, 19], [30, 23]]
使用in_groups 的另一个优势是,您可以(严格)保留数组大小。它将fill_with = nil 保持数组大小。
【讨论】: