2016-09-06 41 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。 –