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

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

我知道你可以使用Array :: concat函数连接两个数组,我可以做一个循环来连续连接它们,如下所示:

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

但是我想知道是否有像ruby一样的内容可以以更清晰的方式进行。

谢谢你的帮助。

你正在寻找#flatten

 concatenated = array_of_arrays.flatten 

默认情况下,这将recursion地扁平化列表。 #flatten接受一个可选的参数来限制recursion深度 – 文档列举了一些例子来说明不同之处。

或者更一般地说:

 array_of_arrays.reduce(:concat) 

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