method

flatten

v1_8_7_330 - Show latest stable - Class: Array
flatten(...)
public

Returns a new array that is a one-dimensional flattening of this array (recursively). That is, for every element that is an array, extract its elements into the new array. If the optional level argument determines the level of recursion to flatten.

s = [ 1, 2, 3 ]           #=> [1, 2, 3]
t = [ 4, 5, 6, [7, 8] ]   #=> [4, 5, 6, [7, 8]]
a = [ s, t, 9, 10 ]       #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
a.flatten                 #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [ 1, 2, [3, [4, 5] ] ]
a.flatten(1)              #=> [1, 2, 3, [4, 5]]

1Note

Make your custom enumerable "flattenable"

stevo ยท May 5, 2020

Just alias +to_a+ to +to_ary+

class A
include Enumerable

def each
  yield "a"
  yield "b"
end
end


[A.new, A.new].flatten => [#<A:0x00007fbddf1b5d88>, #<A:0x00007fbddf1b5d60>]


class A
def to_ary
  to_a
end
end

[A.new, A.new].flatten => ["a", "b", "a", "b"]