Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby Uniq 방법을 사용하여 중복을 제거하는 방법

uniq 사용 배열에서 모든 중복 요소를 제거할 수 있는 방법입니다.

어떻게 작동하는지 봅시다!

이와 같은 배열이 있는 경우 :

n = [1,1,1,2,3,4,5]

숫자 1 중복됩니다.

uniq 호출 이 배열에서 추가 배열을 제거하고 고유 번호가 있는 새 배열을 반환합니다.

:

n.uniq

# [1,2,3,4,5]

uniq n은(는) 변경되지 않습니다. (원래 배열)이므로 uniq!를 호출해야 합니다. , 또는 새 배열을 저장합니다.

:

unique_numbers = n.uniq

꽤 쉽죠?

하지만 많은 사람들이 uniq 차단합니다.

블록을 사용하면 더 많은 고급 작업을 수행할 수 있습니다. 것들.

설명하겠습니다...

블록과 함께 Ruby Uniq 방법을 사용하는 방법

uniq를 호출할 때 , 배열 요소에서 해시를 만들어 작동합니다.

모든 요소는 해시의 키가 됩니다.

해시 키는 고유하기 때문에 해시의 모든 키 목록을 얻을 수 있으며 이 목록은 고유한 요소가 있는 새 배열이 됩니다.

지금 :

무언가를 독특하게 만드는 요소를 변경하려면 블록을 전달할 수 있습니다.

예시 :

fruits = %w(orange apple banana)

"Orange"와 "Banana"는 6자의 길이가 같습니다.

uniq를 사용하는 경우 이렇게 :

fruits.uniq(&:size)

# ["orange", "apple"]

그런 다음 문자열을 크기로 비교할 때 중복되기 때문에 "banana"를 삭제합니다.

또 다른 예 :

objects = [1, 2, "a", "b", :c, :d]

objects.uniq(&:class)

이렇게 하면 클래스별로 고유한 개체가 있는 배열을 얻을 수 있습니다.

[1, "a", :c]

이것의 위력이 보이십니까?

블록을 uniq에 전달할 때 , 고유한 것으로 간주되는 규칙을 정확히 정의할 수 있습니다.

여러 조건에서 Uniq를 사용하는 방법

여러 조건을 사용할 수 있습니다!

방법은 다음과 같습니다. :

User가 있다고 가정해 보겠습니다. 클래스:

  • age
  • name
  • country

같은 연령의 국가당 한 명만 원합니다.

차단으로 간편함 :

[david, petter, raphael].uniq { |person| [person.age, person.country] }

이 코드를 사용하면 두 조건이 모두 일치해야 고유한 것으로 간주될 수 있습니다.

어떻게 작동합니까?

블록이 없으면 객체가 해시 키가 됩니다.

블록을 사용하면 산출된 값이 해시 키가 되고 객체가 해시 값이 됩니다.

그럼...

Ruby는 값을 가져와 새 배열로 반환합니다.

이것들은 구현 세부 사항일 뿐이지만 매우 흥미로워서 여러분과 공유하고자 합니다.

요약

uniq에 대해 배웠습니다. 루비의 메소드! 정확한 사용 방법, 유용한 이유 및 작동 원리.

이제 기억할 수 있도록 이 방법으로 연습하세요.

읽어주셔서 감사합니다!