我有阵列:
a = [1,3,4,5]
b = [1,2,3]
有没有简短的检查方法:
a.include? b
它应该返回true
,3
就在那里。
我能做到:
b.each do |bb|
puts true if a.include? bb
end
但这不是迭代大数组来检查它的好方法。
答案 0 :(得分:1)
您可以检查数组差异是否为空:
a = [1, 2, 3]
b = [1, 3, 4, 5]
(a - b).empty? # false
答案 1 :(得分:1)
执行此操作的一种方法是使用Enumerable.any?
[1, 3, 4, 5].any? { |i| [1, 2, 3].include? i }
答案 2 :(得分:1)
您可以使用数组交集:
a = [1,2,3,4]
b = [2,4]
c = [5,6]
它给出了以下结果:
(a & b).any?
# true
(a & c).any?
# false
答案 3 :(得分:0)
您可以使用Set.disjoint?
:
require 'set'
Set[1, 2, 3].disjoint? Set[3, 4] # => false
Set[1, 2, 3].disjoint? Set[4, 5] # => true
答案 4 :(得分:0)
如果我减去a - b并且a有一些b也有的元素,则a - b的新数组的元素数量较少,因为a - b返回所有元素,但是b却没有。我可以根据原始尺寸检查结果。
{
['Alabama','USA'],
['Alaska','USA'],
['London','UK'],
['Kiev','Ukraine'],
}