2010-06-30 13 views
7

Dada una matriz que contiene otras matrices anidadas, deseo crear una matriz que contenga solo los elementos de la primera matriz. Por ejemplo [["1", "2"], "3", [["4"]]] debería evaluar a ["1", "2", "3", "4"].Desempaquetado funcional de la matriz anidada

He conseguido hacer un método que funciona:

@@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 

pero no he sido capaz de encontrar la manera de eliminar la variable @@ unwrapped_array.

Respuesta

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

¡Gracias! Sabía que había una respuesta fácil, simplemente no era lo fácil que era :) – Prisen

Cuestiones relacionadas