Ruby 内置方法从一维数组创建多维数组

标签 ruby arrays idioms

如果我有这样的数组:[0, 1, 2, 3, 4, 5],是否有内置方法来创建它: [[0, 1, 2], [3, 4, 5]] 宽度为 3?如果没有内置方法,我该如何改进?

def multi_to_single(array, width)
    return [].tap{|md_array|
        (array.length.to_f / width).ceil.times {|y|
            row = (array[(y*width), width])
            md_array.push( row + Array.new(width - row.length))
        }
    }
end

我觉得我错过了一些明显的东西,因为我已经有一段时间没有编写 ruby​​ 程序了! 提前致谢,嗯。

编辑:它需要在核心库中,所以没有 ruby​​ on rails 或任何东西。

最佳答案

我想这就是您要找的:

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

使用 ruby​​ 1.9.2p136(2010-12-25 修订版 30365)

关于Ruby 内置方法从一维数组创建多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8869539/

相关文章:

java - 关于 java : get `String[].class` from `String.class` , 如果 `String.class` 是 "runtime type"怎么办?

javascript - 奇怪的javascript代码

ruby - 计算百分位数 (Ruby)

ruby rspec 和字符串比较

python - numpy.savetxt 在新行上保存每个元素?

c++ - 用于模拟运行时数字模板参数的成语?

testing - 什么是好的经验法则浮点比较方法选择器?

ruby-on-rails - 使用 Ruby ActiveRecord 时间戳的单词时差

ruby-on-rails - 对 Rails 应用程序的第一个请求非常慢

php - foreach 循环后数组被覆盖