Ruby innere Abflachung (Array von Arrays)
Ich habe ein Array wie das folgende
[
[[0, :a], [2, :b]],
[3, :c],
[4, :d],
[[5, :e], [6, :f], [7, :g]]
]
Das ist ein Array von Elementen, die entweder (1) 2-Element-Arrays oder (2) ein Array von 2-Element-Arrays sind.
Ich versuche, eine elegante Methode zu finden, um dieses Array so zu "verflachen", dass Elemente, die (2) sind, zu Elementen auf Stammebene erweitert werden. In diesem Beispiel:
[[0, :a], [2, :b], [3, :c], [4, :d], [5, :e], [6, :f], [7, :g]]
Das ist fast wie mitArray#flatten(depth)
, außerdepth
muss von innen nach außen arbeiten, nicht von außen nach innen.
Die tatsächlichen Arrays können sehr groß werden, so dass ich nicht pushen möchte <<
) Elemente auf ein neues Array in einer Schleife aus Performancegründen. Aus irgendeinem Grund kann ich mir nicht vorstellen, wie ich eine Kombination von @ verwenden solmap
, flatten
, flat_map
oder andere effizientereEnumerable
-Methoden, um dies zu erreichen, ohne eine C ++ - artige Vorbelegungs- und Bestückungsschleife zu schreiben. Kann sich jemand einen rubinistischeren Weg vorstellen, dies zu tun?