我有如下所示红宝石内扁平化(数组的数组)
[
[[0, :a], [2, :b]],
[3, :c],
[4, :d],
[[5, :e], [6, :f], [7, :g]]
]
即,要么(1)2-元件阵列元件的阵列,或(2)的数组的数组2元素阵列。
我想找到一个优雅的方式来“扁平化”这个数组,使得(2)中的元素被扩展到根级元素中。在这个例子中:
[[0, :a], [2, :b], [3, :c], [4, :d], [5, :e], [6, :f], [7, :g]]
这几乎就像使用Array#flatten(depth)
,除了depth
需要由内而外的工作,而不是在外面
实际阵列可以得到非常大的,所以我不知道。由于性能原因,想要将(<<
)元素推入循环中的新阵列。出于某种原因,我想不出如何使用map
,flatten
,flat_map
或其他更高效的方法的任何组合来完成此操作,而无需编写C++风格的预分配和填充循环。任何人都可以想到更多的Rubyist方法来做到这一点?