填充ruby哈希:-通过哈希值与数组值的哈希值

时间:2020-03-24 20:55:30

标签: ruby

我的数据库响应如下:

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}]
]

我想念什么?

1 个答案:

答案 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"
    }
  ]
}