2010-06-30 2 views
7

Dato un array contenente altri array annidati, voglio creare un array contenente solo gli elementi del primo array. Ad esempio [["1", "2"], "3", [["4"]]] devono essere valutati su ["1", "2", "3", "4"].Scomposizione funzionale dell'array nidificato

Sono riuscito a fare un metodo che funziona:

@@unwrapped_array = [] 
def unwrap_nested_array(array) 
    if array.respond_to?('each') 
    array.each { |elem| unwrap_nested_array(elem) } 
    else 
    @@unwrapped_array.push array 
    end 
end 

ma non sono stato in grado di capire come eliminare il @@ variabili unwrapped_array.

risposta

10
[["1", "2"], "3", [["4"]]].flatten 
# => ["1", "2", "3", "4"] 
+0

Grazie! Sapevo che c'era una risposta facile, ma non quanto fosse facile :) – Prisen