有没有什么方法可以检查数组是否在数组中?

时间:2016-03-10 11:41:35

标签: ruby

我有阵列:

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

有没有简短的检查方法:

a.include? b

它应该返回true3就在那里。

我能做到:

b.each do |bb|
 puts true if a.include? bb
end

但这不是迭代大数组来检查它的好方法。

5 个答案:

答案 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'],
 }