2016-09-06 42 views
1

檢查個別匹配元素我有這兩個數組在兩個不同的陣列

arr1 = ["dog", "cat", "bird"]

arr2 = ["fish", "bear", "bird"]

通知的唯一匹配元件是如何「鳥」來自兩個陣列。我想查找一個檢查,如果有任何元素匹配,則返回true。

例如,這不起作用arr1.include?(arr2)但尋找會的方法。

回答

3

我找到了一個好辦法做到這一點:

(arr1 & arr2).any? 

&是一個邏輯運算符,如果兩個陣列中存在的一些元素,這將返回這些元素。

any?檢查數組中是否存在任何元素。如果至少存在一個,則返回true

+0

'&'和'any?'做什麼? –

+0

'&'是邏輯運算符,如果兩個數組中存在某個元素,則返回它。 'any?'檢查數組中存在的元素,如果至少有一個,則返回true –

+0

Thanks @BartekGladys。我的意思是,這個信息應該包含在你整潔的解決方案中,以使它更完整:) –

1
arr1.any? { |item| arr2.include?(item) } 

這將檢查第一個數組中是否包含任何第二個數組中的項目。

1

你可以用兩個數組之間的交集來做到這一點,然後我們可以檢查結果中是否有匹配的元素。

(arr1 & arr2).present? 

在你的情況,我們有

arr1 = ["dog", "cat", "bird"] 

arr2 = ["fish", "bear", "bird"] 

結果可能是這樣的:

(arr1 & arr2).present? 

它將返回['bird'],所以它不是空的,本?將返回true。

+0

哪個版本的Ruby有'Array'類中包含的'present?'方法? –

+0

沒有方法錯誤,因爲'present?'不包含在Array類中 –

+0

我們在rails中有它。我們可以做[1,2]。現在?這將返回true。 –