Ruby:如何将数组数组连接成一个数组

时间:2011-11-26 22:26:13

标签: ruby arrays multidimensional-array concatenation

我在Ruby on Rails(3.1)中有一个数组数组,其中所有内部数组都有不同的大小。有没有办法轻松连接所有内部数组,以获得所有项目的一个大的一维数组?

我知道你可以使用Array :: concat函数来连接两个数组,我可以做一个循环来按顺序连接它们:

concatenated = Array.new
array_of_arrays.each do |array|
    concatenated.concat(array)
end

但是我想知道是否有类似Ruby的单行内容可以更清洁地进行。

感谢您的帮助。

3 个答案:

答案 0 :(得分:147)

您正在寻找#flatten

concatenated = array_of_arrays.flatten

默认情况下,这会以递归方式展平列表。 #flatten接受一个可选参数来限制递归深度 - 文档列出了用于说明差异的示例。

答案 1 :(得分:27)

或更一般地说:

array_of_arrays.reduce(:concat)

答案 2 :(得分:4)

你可以使用展平!方法。例如。 a = [ 1, 2, [3, [4, 5] ] ] a.flatten! #=> [1, 2, 3, 4, 5]