And*_*rtz 3 ruby arrays flatten
我有一个像下面这样的数组
[
[[0, :a], [2, :b]],
[3, :c],
[4, :d],
[[5, :e], [6, :f], [7, :g]]
]
Run Code Online (Sandbox Code Playgroud)
也就是说,元素数组是(1)2元素数组,或(2)2元素数组数组.
我试图找到一种优雅的方法来"扁平化"这个数组,使得(2)元素扩展到根级元素.在这个例子中:
[[0, :a], [2, :b], [3, :c], [4, :d], [5, :e], [6, :f], [7, :g]]
Run Code Online (Sandbox Code Playgroud)
这几乎就像使用一样Array#flatten(depth),除了depth需要从内到外工作,而不是外在工作.
实际的数组可能变得非常大,因此<<出于性能原因,我不希望将()元素推送到循环中的新数组.出于某种原因,我想不出如何使用的任意组合map,flatten,flat_map,或其他更有效的Enumerable方法来完成,而不需要写一个C++ -风格的预分配,并填入循环.任何人都可以想到更多Rubyist方式来做到这一点吗?