반응형
루비의 해시 값을 기준으로 해시 배열 내에서 검색하려면 어떻게 해야 합니까?
나는 해시 배열을 가지고 있어요, @fathers.
a_father = { "father" => "Bob", "age" => 40 }
@fathers << a_father
a_father = { "father" => "David", "age" => 32 }
@fathers << a_father
a_father = { "father" => "Batman", "age" => 50 }
@fathers << a_father
이 배열을 검색하고 블록이 true를 반환하는 해시 배열을 반환하려면 어떻게 해야 합니까?
예:
@fathers.some_method("age" > 35) #=> array containing the hashes of bob and batman
감사해요.
Enumerable #select(일명: Enumerable #select)를 찾고 있습니다.find_all
):
@fathers.select {|father| father["age"] > 35 }
# => [ { "age" => 40, "father" => "Bob" },
# { "age" => 50, "father" => "Batman" } ]
설명서에 따라 [이 경우 열거형의 모든 요소를 포함하는 배열을 반환합니다.@fathers
] 이에 대한 블록은 거짓이 아닙니다."
첫 번째 매치가 반환됩니다.
@fathers.detect {|f| f["age"] > 35 }
배열이 다음과 같은 경우
array = [
{:name => "Hitesh" , :age => 27 , :place => "xyz"} ,
{:name => "John" , :age => 26 , :place => "xtz"} ,
{:name => "Anil" , :age => 26 , :place => "xsz"}
]
배열에 이미 값이 있는지 여부를 확인합니다.찾기 방법 사용
array.find {|x| x[:name] == "Hitesh"}
Hitesh가 이름에 있으면 개체를 반환합니다. 그렇지 않으면 nil을 반환합니다.
(기존 답변(누군가에게 도움이 되는 희망)에 추가하기:)
나이가 더 간단하지만 문자열의 경우와 대소문자를 무시하는 경우:
- 존재를 확인하기 위해:
@fathers.any? { |father| father[:name].casecmp("john") == 0 }
시작 또는 문자열의 모든 경우에 대해 작동해야 합니다. 즉,"John"
,"john"
또는"JoHn"
등등.
- 첫 번째 인스턴스/인덱스 찾기
@fathers.find { |father| father[:name].casecmp("john") == 0 }
- 이러한 인덱스를 모두 선택하는 방법
@fathers.select { |father| father[:name].casecmp("john") == 0 }
언급URL : https://stackoverflow.com/questions/2244915/how-do-i-search-within-an-array-of-hashes-by-hash-values-in-ruby
반응형
'sourcecode' 카테고리의 다른 글
하나의 양식에 두 개의 제출 단추 (0) | 2023.06.02 |
---|---|
루비 상속 대 믹스인 (0) | 2023.06.02 |
Swift에서 한 뷰 컨트롤러의 방향을 세로 모드로만 잠그는 방법 (0) | 2023.05.28 |
탭 표시줄 탭 보기로 프로그래밍 방식으로 전환하시겠습니까? (0) | 2023.05.28 |
Azure 웹 사이트 301 리디렉션 - 어디에 두어야 합니까? (0) | 2023.05.28 |