我正在尝试比较两个 Ruby 数组,以验证第一个数组的所有元素是否都包含在第二个数组中。(反过来则不需要)
例如:
a = ["hello", "goodbye"]
b = ["hello", "goodbye", "orange"]
这应该返回真。
然而,我找不到一种方法来实现这个。任何帮助都将不胜感激!
我正在尝试比较两个 Ruby 数组,以验证第一个数组的所有元素是否都包含在第二个数组中。(反过来则不需要)
例如:
a = ["hello", "goodbye"]
b = ["hello", "goodbye", "orange"]
这应该返回真。
然而,我找不到一种方法来实现这个。任何帮助都将不胜感激!
有许多方式可以检查相同的事情:
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
这里使用数组设置逻辑非常好:
a & b == a
a & b
会生成一个新的数组,其中包含同时存在于 a
和 b
中的元素。您可以将其与 a
进行比较,以确保交集包含了 a
本身的所有元素。有关更多详细信息,请参见 Array#& 的手册条目。a=[1,1,2]; b=[1,2,3]; p a&b==a #=> false
因为 a&b == [1,2]
。根据重复问题的答案,(a-b).empty?
或许是更好的选择。 - Phrogz