2014-03-25 96 views
-4

任何人都可以帮助我吗?这是我的问题: 我需要搜索三维或四维数组并从中删除元素。红宝石通过多维数组搜索并删除元素

注:顺序必须保存

例阵列:

[[["tard_cat", "pusheen_cat"], ["boo_dog"]]] 

我想删除与所述子串 '猫' 的元素。因此,预期的结果将是:

[[[], ["boo_dog"]]] 

回答

7

这应该这样做:

def deep_remove!(text, array) 
    array.delete_if do |value| 
    case value 
    when String 
     value.include? text 
    when Array 
     deep_remove!(text, value) 
     false 
    else 
     false 
    end 
    end 
end 

array = [[["tard_cat", "pusheen_cat"], ["boo_dog"]]] 
deep_remove!('cat', array) 
+0

+1 ..我喜欢你的方法.. –

+0

嗯我的评论被删除。无论如何,我会再次发布。非常感谢你的解决方案。太棒了!我感谢你的帮助:) – cancelledout