2

次のような Ruby 配列を取得しました。

[  { "lat" => 123, "lon" => 456 },
   { "lat" => 789, "lon" => 102, "col" => "red" },
   { "lat" => 442, "lon" => 342 } ]

キーとしてのハッシュが配列の上部または下部にプッシュされるように並べ替えたいと思います。col

sort_by正しい構文/意味がわかりません。

4

2 に答える 2

1

私がいつも好きな、より機能的なアプローチ:

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}]
于 2013-04-22T07:16:35.540 に答える