【问题标题】:segmenting an array by a fixed length in ruby [duplicate]在ruby中按固定长度分割数组[重复]
【发布时间】:2011-02-08 23:46:05
【问题描述】:

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

按给定长度分割数组的最佳方法是什么?我想要的是下面的“segment_by”:

[1, 2, 3, 4, 5, 6].segment_by(2)
# => [[1, 2], [3, 4], [5, 6]]

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'].segment_by(3)
# => [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h']]

我设法想出的是以下,但它看起来不够简单:

class Array
    def segment_by i
        (0...length).group_by{|x| x.div(i)}.values.map{|a| a.map{|j| self[j]}}
    end
end

我正在使用 ruby​​1.9.2。是否已经有这样的方法,还有更好的方法吗?

【问题讨论】:

  • PS:也不需要重复答案。
  • 感谢您的回答。抱歉重复了。

标签: ruby


【解决方案1】:

使用each_slice

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-02
    • 2016-10-07
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    相关资源
    最近更新 更多