2013-06-28 73 views
4

我想比較兩個Ruby數組來驗證所有的第一個數組元素都包含在第二個數組中。 (無需反向。)檢查一個Ruby數組的元素是否包含在另一個數組中

例如:

a = ["hello", "goodbye"] 
b = ["hello", "goodbye", "orange"] 

這應該返回true。

但是,我找不出一種方法可以讓我做到這一點。任何幫助,將不勝感激!

+1

你是正確的,謝謝!我很抱歉重複。但是,此時我無法刪除問題,因爲已經有答案。只有版主才能刪除它。 – CodeBiker

回答

8

方法很多在那裏檢查相同:

a = ["hello", "goodbye"] 
b = ["hello", "goodbye", "orange"] 
(a - b).empty? # => true 
a.all?{|i| b.include? i } 
# => true 

a = ["hello", "welcome"] 
b = ["hello", "goodbye", "orange"] 
(a - b).empty? # => false 
a.all?{|i| b.include? i } 
# => false 
8

陣列設置邏輯是好的這裏:

a & b == a 

a & b產生由同時存在於兩個ab元素的一個新的數組。然後您可以根據a對其進行測試,以確保橫截面包含a本身的所有元素。有關更多詳細信息,請參見Array#&上的手冊條目。

+2

請注意,如果存在重複的值,則這不好。例如,'a = [1,1,2]; B = [1,2,3];自a&b == [1,2]'以來,p a&b == a#=> false。根據重複問題的答案,「(a-b).empty?'也許是更好的選擇。 – Phrogz

+0

啊,好點! –

相關問題