配列があり、各要素は3つのキー/値ペアを持つハッシュです:
:phone => "2130001111", :Zip => "12345", :city => "sometown"
同じエリア内のすべてのZip
が一緒になるように、phone
でデータを並べ替えたいと思います。 Rubyには簡単な方法がありますか? will_paginate
は配列内のデータをページ分割できますか?
sorted = dataarray.sort {|a,b| a[:Zip] <=> b[:Zip]}
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
配列内のデータをページ分割したい場合は、 'will_paginate/array'が必要です あなたのコントローラーで
ネストされたハッシュ(ハッシュ形式内のハッシュ)が配列要素(次のような構造)としてあり、キー(ここの日付)でソートする場合
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 }