I have an array like the following
[
[[0, :a], [2, :b]],
[3, :c],
[4, :d],
[[5, :e], [6, :f], [7, :g]]
]
That is, an Array of elements
One way to do is:
array.flatten.each_slice(2).to_a
Posting another solution here for posterity:
array.flat_map{|el| el.first.is_a?(Array) ? el : [el]}
This solution also handles if the innermost Arrays are of variable length -- that is, the total Array is an Array of (1) n-element Arrays or (2) Arrays of n-element Arrays, where n is not necessarily the same for any given element. For example
[
[1,2,3],
[[4,5], [6,7,8,9]]
]