0

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

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

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

谢谢你的帮助。

4

4 回答 4

4

array.delete_if{|ary| ary.kind_of?(Array) and ary.include?('a') } 删除所有包含的数组"a"

于 2013-01-31T18:21:16.147 回答
2

您是否特别想删除["a", "b"],知道它到底是什么,或者您想删除任何和所有包含 的数组,"a"无论它们的剩余值如何?目前尚不清楚您的意思是“包含“a”的嵌套数组”作为问题规范的一部分,还是只是一种指示特定示例中的哪些元素您希望得到目标答案的方式。

对于第一个,您可以使用 DigitalRoss 的答案。

第二种,你可以使用 Huluk,但它在另一种方式上过于具体;我会避免kind_of? Array测试。如果您知道元素都是数组,那么只需假设它并继续前进,依靠异常来捕获任何异常:

array.delete_if { |sub| sub.include? 'a' }

如果您确实需要测试,我会使用鸭子类型而不是显式的类检查:

array.delete_if { |item| item.respond_to? :include? and item.include? 'a' }
于 2013-01-31T18:26:43.823 回答
1
> [["a", "b"], ["c", "d"]] - [["a", "b"]]
 => [["c", "d"]] 

如果除了知道它包含“a”之外,您还没有该元素的句柄,您可以执行以下操作:

array - [array.find { |x| x.include? "a" }]
于 2013-01-31T18:19:59.510 回答
0

试试这个:

   array.delete_if { |x| x.include? "a" }
于 2013-01-31T18:26:11.093 回答