检查个别匹配元素我有这两个数组在两个不同的阵列
arr1 = ["dog", "cat", "bird"]
arr2 = ["fish", "bear", "bird"]
通知的唯一匹配元件是如何“鸟”来自两个阵列。我想查找一个检查,如果有任何元素匹配,则返回true。
例如,这不起作用arr1.include?(arr2)
但寻找会的方法。
检查个别匹配元素我有这两个数组在两个不同的阵列
arr1 = ["dog", "cat", "bird"]
arr2 = ["fish", "bear", "bird"]
通知的唯一匹配元件是如何“鸟”来自两个阵列。我想查找一个检查,如果有任何元素匹配,则返回true。
例如,这不起作用arr1.include?(arr2)
但寻找会的方法。
我找到了一个好办法做到这一点:
(arr1 & arr2).any?
&
是一个逻辑运算符,如果两个阵列中存在的一些元素,这将返回这些元素。
any?
检查数组中是否存在任何元素。如果至少存在一个,则返回true
。
arr1.any? { |item| arr2.include?(item) }
这将检查第一个数组中是否包含任何第二个数组中的项目。
你可以用两个数组之间的交集来做到这一点,然后我们可以检查结果中是否有匹配的元素。
(arr1 & arr2).present?
在你的情况,我们有
arr1 = ["dog", "cat", "bird"]
arr2 = ["fish", "bear", "bird"]
结果可能是这样的:
(arr1 & arr2).present?
它将返回['bird']
,所以它不是空的,本?将返回true。
哪个版本的Ruby有'Array'类中包含的'present?'方法? –
没有方法错误,因为'present?'不包含在Array类中 –
我们在rails中有它。我们可以做[1,2]。现在?这将返回true。 –
'&'和'any?'做什么? –
'&'是逻辑运算符,如果两个数组中存在某个元素,则返回它。 'any?'检查数组中存在的元素,如果至少有一个,则返回true –
Thanks @BartekGladys。我的意思是,这个信息应该包含在你整洁的解决方案中,以使它更完整:) –