답변:
단순 :
array_of_hashes.sort_by { |hsh| hsh[:zip] }
노트 :
사용할 때 sort_by
결과를 새 변수에 할당해야합니다. array_of_hashes = array_of_hashes.sort_by{}
그렇지 않으면 "bang"메소드를 사용하여 해당 위치를 수정할 수 있습니다.array_of_hashes.sort_by!{}
sort_by
결과를 새 변수에 할당해야합니다. array_of_hashes = array_of_hashes.sort_by{}
그렇지 않으면 "bang"방법을 사용하여 대신 수정할 수 있습니다.array_of_hashes.sort_by!{}
array_of_hashes.sort_by(&:zip)
.sort_by { |hsh| hsh.zip }
이므로 .zip
각 해시에서 메소드로 정의 된 경우에만 작동합니다 . 기본적으로 해시는 키를 메소드로 노출하지 않으므로 아마도 다른 일이있을 것 같습니다.
array_of_hashes.sort_by!(&:zip)
.zip
그리고 [:zip]
모두의 의지 작동합니다. ActiveRecord에는 두 가지 스타일이 모두 정의되어 있습니다.
뱅을 사용하여 배열을 수정하십시오.
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
&:
은 method
아닙니다 attribute
. 해시에는 속성을 반영하는 메소드가 있다고 가정합니다.
reverse
방법 : P
당신이있는 경우 중첩 된 해시 (여기 날짜) 배열 요소 (다음과 같은 구조)로 (해시 형식 내부 해시)과 키를 정렬하려면
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 }
[city,zip]=>phone
나city=>{zip1=>[<phones>], zip2=>...}
.