次のような Ruby 配列を取得しました。
[ { "lat" => 123, "lon" => 456 },
{ "lat" => 789, "lon" => 102, "col" => "red" },
{ "lat" => 442, "lon" => 342 } ]
キーとしてのハッシュが配列の上部または下部にプッシュされるように並べ替えたいと思います。col
sort_by
正しい構文/意味がわかりません。
私がいつも好きな、より機能的なアプローチ:
require 'pp'
a = [ {:foo => "aa","col" => "bar"}, { "lat" => 123, "lon" => 456 },
{ "lat" => 789, "lon" => 102, "col" => "red" },
{ "lat" => 442, "lon" => 342 } ]
arr = a.group_by{|h| h.key?("col")}
pp arr[false] + arr[true] # on the bottom
出力:
[{"lat"=>123, "lon"=>456},
{"lat"=>442, "lon"=>342},
{:foo=>"aa", "col"=>"bar"},
{"lat"=>789, "lon"=>102, "col"=>"red"}]
pp arr[true] + arr[false] #on the top
出力:
[{:foo=>"aa", "col"=>"bar"},
{"lat"=>789, "lon"=>102, "col"=>"red"},
{"lat"=>123, "lon"=>456},
{"lat"=>442, "lon"=>342}]