檢查

2016-03-04 51 views
-1

我有數組:檢查

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 

但這不是遍歷一個大陣列的好方法。或:

c = [2,4] 
a.include? b 

應該返回true沒有迭代。

+0

你命名''包括高度誤導? – sawa

回答

8

你可以交叉數組。如果交集是非空的,該陣列具有共同的元素:

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

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

這是很有效的,因爲它使用一個臨時散罩下。

1

,我希望你也可以要像intersect種事情Set

require 'set' 
Set[1,3,4,5].intersect? Set[1,2,3] # => true 

Here用過的東西是

1

如果我減去b - aa有一些元素b有太多,那麼新數組b - a具有較小數量的元素,因爲b - a返回所有元素,其中b具有但a沒有。我可以根據原始尺寸檢查結果。

a = [1,3,4,5] 
b = [1,2,3] 
b.size > (b - a).size 
# => true 
0

您可以使用數組路口:

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

它提供了以下結果:

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