我有数组:有什么办法检查数组是否在数组中?
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
但这不是用于遍历一个大阵,以检查它的好方法。
我有数组:有什么办法检查数组是否在数组中?
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
但这不是用于遍历一个大阵,以检查它的好方法。
您可以检查数组不同的是空:
a = [1, 2, 3]
b = [1, 3, 4, 5]
(a - b).empty? # false
您可以使用Set.disjoint?
:
require 'set'
Set[1, 2, 3].disjoint? Set[3, 4] # => false
Set[1, 2, 3].disjoint? Set[4, 5] # => true
一种方式做到这一点是使用Enumerable.any?
[1, 3, 4, 5].any? { |i| [1, 2, 3].include? i }
这是唯一的答案这不会迭代一个或两个a全部被炸毁。由于OP说他们不想迭代大数组,所以这应该是被接受的答案。 –
如果我减去a - b和a有一些b也有的元素,那么新的a - b具有较少数量的元素,因为a-b返回所有元素,a具有但b没有。我可以根据原始尺寸检查结果。
a = [1,3,4,5]
b = [1,2,3]
(a - b).size < a.size
# => true
您可以使用数组路口:
a = [1,2,3,4]
b = [2,4]
c = [5,6]
它提供了以下结果:
(a & b).any?
# true
(a & c).any?
# false
的可能的复制[的Ruby/Rails:如何判断一个数组包含的其他所有元素数组?](http://stackoverflow.com/questions/7387937/ruby-rails-how-to-determine-if-one-array-contains-all-elements-of-another-array) – lifetimes