我在Ruby on Rails(3.1)中有一个数组数组,其中所有内部数组都有不同的大小。有没有办法轻松连接所有内部数组,以获得所有项目的一个大的一维数组?
我知道你可以使用Array :: concat函数来连接两个数组,我可以做一个循环来按顺序连接它们:
concatenated = Array.new
array_of_arrays.each do |array|
concatenated.concat(array)
end
但是我想知道是否有类似Ruby的单行内容可以更清洁地进行。
感谢您的帮助。
答案 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]