我有一组对象,这些对象已根据这些对象的几个属性进行了排序。按优先级顺序,这些属性foo
是bar
和baz
。这意味着对象首先按foo
;排序 然后具有相同foo
值的子序列按bar
; 然后那些具有相同foo
和bar
值的按 排序baz
。
我想将其转换为反映此分组的嵌套哈希。基本上我正在寻找一个递归的Enumerable#group_by
. 键是foo
、bar
和baz
;的值 这些值可以是对象的子哈希或数组。这是一个例子:
[obj1, obj2, ... objn].group_by_recursive(:foo, :bar, :baz)
#=> {
foo_val_1 => {
bar_val_1 => {
baz_val_1 => [
obj1,
obj2,
obj3
],
baz_val_2 => [
obj4,
obj5
]
},
bar_val_2 => {
baz_val_1 => [
obj6,
obj7
],
baz_val_2 => [
obj8
]
},
},
foo_val_2 => {
...
},
...
}