2016-09-06 4 views
1

개별 일치하는 요소에 대한 확인 나는이 두 배열 두 개의 서로 다른 배열

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

만 일치하는 요소가 "새"는 두 배열에서 얼마나

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

공지 사항

있습니다. 어떤 요소가 일치하면 true를 반환하는지 알려주는 검사를 찾고 싶습니다.

예를 들어,이 방법은 arr1.include?(arr2)이 작동하지 않지만 원하는 방법을 찾고 있습니다.

답변

3

나는이 작업을 수행 할 수있는 좋은 방법을 발견했다 :

(arr1 & arr2).any? 

&는 일부 요소가 두 배열에 존재하는 경우,이 이러한 요소를 반환합니다, 논리 연산자입니다.

any?은 배열에 요소가 있는지 확인합니다. 하나 이상 존재하면 true을 반환합니다.

+0

'&'및'any? '는 무엇을합니까? –

+0

'&'는 논리 연산자이며, 두 개의 배열에 무언가 요소가 있으면 반환합니다. 배열에 something 요소가 있는지 검사하는 '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'] 돌아갑니다? 사실을 돌려 줄 것입니다.

+0

'현재 클래스'버전의 Ruby 버전은'Array' 클래스에 포함되어 있습니까? –

+0

Array 클래스에'present? '가 포함되어 있지 않으므로 메서드 오류가 발생하지 않습니다. –

+0

레일에 있습니다. 우리는 [1,2]. 존재를 할 수 있습니까? 그것은 사실을 돌려 줄 것입니다. –

관련 문제