Функциональное развертывание вложенного массива - PullRequest
7 голосов
/ 01 июля 2010

Учитывая массив, содержащий другие вложенные массивы, я хочу создать массив, содержащий только элементы из первого массива. Например, [["1", "2"], "3", [["4"]]] должны иметь значение ["1", "2", "3", "4"].

Мне удалось создать метод, который работает:

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

но я не смог выяснить, как устранить переменную @@ unwrapped_array.

1 Ответ

10 голосов
/ 01 июля 2010
[["1", "2"], "3", [["4"]]].flatten
# => ["1", "2", "3", "4"]
...