回答:
シンプル:
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{}
そうしない場所に変更する「ビッグバン」メソッドを使用することができます: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]
両方とも機能します。ActiveRecordsには両方のスタイルが定義されています。
bangを使用して配列を変更します。
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
}
}
]
配列の「sort_by」メソッドを次のように使用します
data.sort_by { |element| element.keys.first }
[city,zip]=>phone
またはを使用して、配列をハッシュにすることを検討してcity=>{zip1=>[<phones>], zip2=>...}
ください。