我的数据库响应如下:
response = [
{id: 1, name: Kassandra, group: Sparta, role: Mercenary}
{id: 2, name: Alexios, group: Sparta, role: Mercenary}
{id: 3, name: Herakles, group: Athens, role: Champion}
]
我的方法:
def get_group_details
grouped_details = []
response.each do |key|
key['group'] = key
grouped_details.push(key)
end
end
这会导致 stack_level_too_deep 错误,我认为这会导致无限循环... 我正在尝试操纵响应以发送到UI:
response: [
Mercenary: {
[{id: 1, name: Kassandra, group: Sparta, role: Mercenary}, {id: 2, name: Alexios, group: Sparta, role: Mercenary}]
}
Champion: [{id: 3, name: Herakles, group: Athens, role: Champion}]
]
我想念什么?
答案 0 :(得分:1)
您可以使用Enumerable#group_by根据特定键的值对哈希进行分组:
response.group_by { |h| h[:role] }
# =>
{
"Mercenary": [
{
"id": 1,
"name": "Kassandra",
"group": "Sparta",
"role": "Mercenary"
},
{
"id": 2,
"name": "Alexios",
"group": "Sparta",
"role": "Mercenary"
}
],
"Champion": [
{
"id": 3,
"name": "Herakles",
"group": "Athens",
"role": "Champion"
}
]
}