检查Ruby数组的元素是否包含在另一个数组中

时间:2013-06-28 22:51:07

标签: ruby-on-rails ruby arrays

我正在尝试比较两个Ruby数组,以验证第一个数组的所有元素都包含在第二个数组中。 (不需要反向。)

例如:

a = ["hello", "goodbye"]
b = ["hello", "goodbye", "orange"]

这应该返回true。

但是,我无法找到一种方法可以让我这样做。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:9)

数组设置逻辑很不错:

a & b == a

a & b生成一个新数组,其中包含ab中存在的元素。然后,您可以针对a对其进行测试,以确保横截面包含a本身的所有元素。有关详细信息,请参阅Array#&上的手册条目。

答案 1 :(得分:9)

有很多方法可以检查相同的内容:

a = ["hello", "goodbye"]
b = ["hello", "goodbye", "orange"]
(a - b).empty? # => true
a.all?{|i| b.include? i }
# => true

a = ["hello", "welcome"]
b = ["hello", "goodbye", "orange"]
(a - b).empty? # => false
a.all?{|i| b.include? i }
# => false