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

7

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

例如:

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

这应该返回真。

然而,我找不到一种方法来实现这个。任何帮助都将不胜感激!


1
您说得对,谢谢!非常抱歉会出现重复的问题。然而,当前我无法删除这个问题,因为已经有答案存在了。只有管理员才能删除它。 - CodeBiker
2个回答

10

有许多方式可以检查相同的事情:

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

9

这里使用数组设置逻辑非常好:

a & b == a
a & b 会生成一个新的数组,其中包含同时存在于 ab 中的元素。您可以将其与 a 进行比较,以确保交集包含了 a 本身的所有元素。有关更多详细信息,请参见 Array#& 的手册条目。

2
请注意,如果存在重复值,则此方法无效。例如,a=[1,1,2]; b=[1,2,3]; p a&b==a #=> false 因为 a&b == [1,2]。根据重复问题的答案,(a-b).empty? 或许是更好的选择。 - Phrogz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接