Ruby:包含在Array中的数组,任何顺序

假设我有以下Ruby代码:

array_1 = ['a', 'b'] array_2 = ['a', 'b', 'c'] some_function(array_1, array_2) # => True some_function(array_2, array_1) # => False some_function(['a', 'b'], ['a', 'd']) # => False some_function(['x', 'y'], array_2) # => False 

当参数2包含参数1中的所有元素时,我几乎都在寻找some_function来返回True。

 def fa,b (ab).empty? end 

从以前的post,

 def fa,b (ab).empty? end 

不会按照你期望的方式工作,例如:

 a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] a2 = [2, 3, 5, 9] (a1-a2).empty? # returns true 

然而,

 a1-a2 # returns [1, 4, 6, 7, 8], not empty 

因此f返回false。

一个更准确的解决方案,如果你想要一个单线程将是:

 def fa,b a&b == b end 

a&b将返回a&b所有元素,然后我们检查它是否等于b

为了模棱两可的缘故:

 def fa,b (a&b == a) || (a&b == b) end 
 def fa,b tmp = a.map(|i| b.include?(i)) tmp.include?(false) end