【发布时间】:2018-06-14 23:59:57
【问题描述】:
在我的 ruby 项目中,我有一个数组数组,这是执行一些繁重的图形遍历的结果
示例:
[[], [1, 2, 3, 4, 5], [[], [], [[], [], [34, 54, 23, 45]]]]
我希望最终产品是
[[1, 2, 3, 4, 5], [34, 54, 23, 45]]
扁平化会让我留下
[1, 2, 3, 4, 5, 34, 54, 23, 45]
所以我不想这样
我被困住了,可以使用一些帮助来解决这个问题
到目前为止,我有
class Array
def flatten_blanks
each{ |elem| elem.flatten_blanks if elem.is_a?(Array) }
reject!{ |elem| elem.is_a?(Array) && elem.length < 1 }
self
end
end
这很接近但给我留下了类似的东西
[[[[[[[1, 2, 3, 4, 5]]]]]]], [[[[[[[34, 54, 23, 45]]]]]]]
【问题讨论】:
-
你的图遍历算法是否也会给你留下一个像
[[],[1,2,[3,4]]]这样的数组,如果是的话,你想要的结果是什么?如果这不能发生,即如果每个子数组是空的,或者只包含非数组元素,或者只包含数组元素,你可以递归地遍历你的数组并收集这些子数组subarr,其中subarr.first.class既不是NilClass也不是Array。