Array#flattenやHash#flattenでは平坦化の深さを指定する事ができます。
数値が大きくなるほど、より深いレベルまで平坦化されます。
無指定ならば最大階層までやってくれます。
a = [1,2,[3,[4,5,[6,7,[8,9]]]]] a.flatten #=> [1, 2, 3, 4, 5, 6, 7, 8, 9] a.flatten(1) #=> [1, 2, 3, [4, 5, [6, 7, [8, 9]]]]
よく使われるArray#flat_mapは深さを指定できません。
上記のような深い階層構造の場合は処理前にflattenして使うか、データ型を見直すべきです。