web-dev-qa-db-ja.com

Ruby:配列の配列を1つに連結する方法

Ruby on Rails(3.1)にすべての内部配列のサイズが異なる配列があります。すべての配列を簡単に連結する方法はありますか?内部配列を使用して、すべてのアイテムを含む1つの大きな1次元配列を取得しますか?

Array :: concat関数を使用して2つの配列を連結できることを知っています。ループを実行して、次のように順番に連結できます。

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

しかし、私はRubyよりきれいな方法でそれを行うワンライナーのようなものがあるかどうかを知りたかったです。

ご協力いただきありがとうございます。

65
Pedro Cori

あなたが探しています - #flatten

concatenated = array_of_arrays.flatten

デフォルトでは、これによりリストが再帰的にフラット化されます。 #flattenは、再帰の深さを制限するオプションの引数を受け入れます。ドキュメントには、違いを説明するための例がリストされています。

149
millimoose

またはより一般的に:

array_of_arrays.reduce(:concat)
27
d11wtq

Flattenを使用できます!方法。例えば。 a = [ 1, 2, [3, [4, 5] ] ] a.flatten! #=> [1, 2, 3, 4, 5]

4
Pankaj