各ハッシュの特定のキーに基づくハッシュの配列のグループが必要です。たとえば、次のようにします。
[
[0] {
:status => "pending",
:x => 1,
:y => 2
},
[1] {
:status => "pending",
:x => 33,
:y => 74
},
[2] {
:status => "done",
:x => 33,
:y => 74
}
]
これを次のように変換する必要があります。
{
"pending" => [
[0] {
:status => "pending",
:x => 1,
:y => 2
},
[1] {
:status => "pending",
:x => 33,
:y => 74
}
],
"done" => [
[0] {
:status => "done",
:x => 33,
:y => 74
}
]
}
:status キーで配列をグループ化しています。私はこれを行いました(動作します):
a.inject({}) {|a, b| (a[b[:status]] ||= []) << b; a }
しかし、同じことを行うことができる、より単純でわかりにくいワンライナーはありますか?