所以我有一个基本问题需要解决。我需要采用以下嵌套数组 [1, 2, ["str", 1], [[2]]] 并返回 [1,2,"str",1,2]。最终删除所有嵌套数组。以下是我的不完整解决方案:
test = [1, 2, ["str", 1], [[2]]]
def remove_array(array)
new_array = []
array.each do |item|
if item != Array
puts "you are here"
new_array << item
else
remove_array(item)
end
end
end
remove_array(test)
这是一个经典的递归方法。但是,我似乎想不出如何维护new_array
。每次我将数组项传递给它时,new_array
都不会保持其状态。我还想指出,我知道内置方法 flatten
,因为我试图在没有所述方法的情况下解决解决方案。任何建议将不胜感激。
最佳答案
def my_flatten(arr)
result = []
arr.each do |el|
if el.is_a?(Array)
result.concat(my_flatten(el))
else
result << el
end
end
result
end
您的想法通常是正确的,但您从未将内部数组元素添加到结果中。
关于arrays - Ruby算法求解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33358657/