如何从Ruby中的另一个数组中删除数组?

时间:2013-01-31 18:17:33

标签: ruby-on-rails ruby ruby-on-rails-3

我在Ruby中有一个嵌套数组:

array = [["a", "b"], ["c", "d"]]

我可以用什么命令从数组中删除包含“a”的嵌套数组?

感谢您的帮助。

4 个答案:

答案 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" }