반응형
루비로 해시 배열을 정렬하는 방법
각 요소가 세 개의 키/값 쌍을 가진 해시인 어레이가 있습니다.
:phone => "2130001111", :zip => "12345", :city => "sometown"
다음 기준으로 데이터를 분류하고 싶습니다.zip그래서 모든 것이phone같은 지역에 있는 s들은 함께 있습니다.루비는 그렇게 하는 쉬운 방법이 있습니까?할 수 있다will_paginate배열의 페이지 데이터?
단순:
array_of_hashes.sort_by { |hsh| hsh[:zip] }
참고:
사용 시sort_by결과를 새 변수에 할당해야 합니다.array_of_hashes = array_of_hashes.sort_by{}그렇지 않으면 "방" 방법을 사용하여 제자리에서 수정할 수 있습니다.array_of_hashes.sort_by!{}
sorted = dataarray.sort {|a,b| a[:zip] <=> b[:zip]}
뱅을 사용하여 배열을 수정합니다.
array_of_hashes.sort_by!(&:zip)
또는 재할당:
array_of_hashes = array_of_hashes.sort_by(&:zip)
sort_by 메서드는 오름차순으로 정렬됩니다.
내림차순으로 정렬해야 하는 경우 다음과 같은 작업을 수행할 수 있습니다.
array_of_hashes.sort_by!(&:zip).reverse!
또는
array_of_hashes = array_of_hashes.sort_by(&:zip).reverse
배열 요소(다음과 같은 구조)로 중첩 해시(해시 형식 내부의 해시)가 있고 키(여기 날짜)로 정렬하려는 경우
data = [
{
"2018-11-13": {
"avg_score": 4,
"avg_duration": 29.24
}
},
{
"2017-03-13": {
"avg_score": 4,
"avg_duration": 40.24
}
},
{
"2018-03-13": {
"avg_score": 4,
"avg_duration": 39.24
}
}
]
Array 'sort_by' 메서드 사용
data.sort_by { |element| element.keys.first }
어레이의 데이터를 페이징하려면 컨트롤러에 'will_pagate/array'가 필요합니다.
언급URL : https://stackoverflow.com/questions/5483889/how-to-sort-an-array-of-hashes-in-ruby
반응형
'programing' 카테고리의 다른 글
| 단일 RSpec 테스트를 실행하는 방법은 무엇입니까? (0) | 2023.06.01 |
|---|---|
| Gradle DSL 메서드를 찾을 수 없습니다. 'runProguard' (0) | 2023.06.01 |
| SDK 위치를 찾을 수 없습니다.local.properties 파일의 sdk.dir 또는 Android_HOME 환경 변수를 사용하여 위치를 정의합니다. (0) | 2023.06.01 |
| iOS UITableView 머리글 보기 추가(섹션 머리글이 아님) (0) | 2023.06.01 |
| Mac OS X에서 정적 라이브러리(.a)의 대상 아키텍처를 어떻게 결정합니까? (0) | 2023.06.01 |