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

我在 Ruby on Rails (3.1)中有一个数组数组,其中所有内部数组的大小都不同。是否有一种方法可以轻松地将所有内部数组连接起来,从而得到一个包含所有项目的大型一维数组?

I know you can use the Array::concat function to concatenate two arrays, and I could do a loop to concatenate them sequentially like so:

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

但是我想知道是否有一个像 Ruby 一行程序这样的程序可以用更干净的方式来完成。

Thanks for your help.

71151 次浏览

你要找的是 #flatten:

concatenated = array_of_arrays.flatten

默认情况下,这将递归地压平列表。#flatten接受一个可选的参数来限制递归深度——文档列出了一些示例来说明这种差异。

或者更一般地说:

array_of_arrays.reduce(:concat)

您可以使用 flatten! 方法,例如。 A = [1,2,[3,[4,5]] 平! # = > [1,2,3,4,5]