我在Ruby中有一个嵌套数组:
array = [["a", "b"], ["c", "d"]]
我可以用什么命令从数组中删除包含“a”的嵌套数组?
感谢您的帮助。
答案 0 :(得分:4)
array.delete_if{|ary| ary.kind_of?(Array) and ary.include?('a') }
删除包含"a"
答案 1 :(得分:2)
您是否特别想删除["a", "b"]
,知道它到底是什么,或者您是否要删除包含"a"
的任何和所有数组,无论它们的剩余值是什么?目前尚不清楚你是否将'包含“a”的嵌套数组作为问题规范的一部分,或者只是指明你希望得到目标答案的具体例子中的哪些元素。
对于第一个,您可以使用DigitalRoss的答案。
对于第二种,你可以使用Huluk's,但它以另一种方式过于具体;我会避免kind_of? Array
测试。如果您知道元素都是数组,那么只需假设它并继续前进,依靠异常来捕获任何数组异常:
array.delete_if { |sub| sub.include? 'a' }
如果你确实需要测试,我会使用duck-typing而不是显式类检查:
array.delete_if { |item| item.respond_to? :include? and item.include? 'a' }
答案 2 :(得分:0)
> [["a", "b"], ["c", "d"]] - [["a", "b"]]
=> [["c", "d"]]
如果您还没有处理元素,只知道它包含“a”,您可以这样做:
array - [array.find { |x| x.include? "a" }]
答案 3 :(得分:0)
试试这个:
array.delete_if { |x| x.include? "a" }