我需要一组基于每个散列的特定键的散列数组。例如,采取这个:
[
[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 }
但是,有没有一种更简单、不那么神秘的单线可以做同样的事情?