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

时间:2016-03-04 08:44:17

标签: arrays ruby

我有阵列:

async Task Get_User_Detail_Event

有没有简短的检查方法如下?

await Get_User_Detail_Event();

它应该返回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

4 个答案:

答案 0 :(得分:8)

您可以与数组相交。如果交集非空,则数组具有公共元素:

a = [1,2,3,4]
b = [2,4]

(a & b).any? # true
!(a & b).empty? # => true

这非常有效,因为它使用了一个临时哈希。

答案 1 :(得分:1)

我希望你可能想要intersect

中使用Set之类的东西
 require 'set'
 Set[1,3,4,5].intersect? Set[1,2,3] # => true

Here它是

答案 2 :(得分:1)

如果我减去b - aa有一些b也包含的元素,则新b - a数组的元素数量较少,因为{{1} }}返回b - ab没有的所有元素。我可以根据原始尺寸检查结果。

a

答案 3 :(得分:0)

您可以使用数组交集:

    a = [1,2,3,4]
    b = [2,4]
    c = [5,6]

它给出了以下结果:

   (a & b).any?
   # true
   (a & c).any?
   # false