method

flatten

v1_9_1_378 - Show latest stable - Class: Array
flatten(p1 = v1)
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"]