Ruby on Rails(3.1)にすべての内部配列のサイズが異なる配列があります。すべての配列を簡単に連結する方法はありますか?内部配列を使用して、すべてのアイテムを含む1つの大きな1次元配列を取得しますか?
Array :: concat関数を使用して2つの配列を連結できることを知っています。ループを実行して、次のように順番に連結できます。
concatenated = Array.new
array_of_arrays.each do |array|
concatenated.concat(array)
end
しかし、私はRubyよりきれいな方法でそれを行うワンライナーのようなものがあるかどうかを知りたかったです。
ご協力いただきありがとうございます。
あなたが探しています - #flatten
:
concatenated = array_of_arrays.flatten
デフォルトでは、これによりリストが再帰的にフラット化されます。 #flatten
は、再帰の深さを制限するオプションの引数を受け入れます。ドキュメントには、違いを説明するための例がリストされています。
またはより一般的に:
array_of_arrays.reduce(:concat)
Flattenを使用できます!方法。例えば。 a = [ 1, 2, [3, [4, 5] ] ] a.flatten! #=> [1, 2, 3, 4, 5]