繁体   English   中英

填充 ruby​​ 散列:- 通过具有数组值的散列的散列

[英]Populating ruby hash:- by hash of hashes with array values

我的数据库响应如下所示:

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

我错过了什么?

您可以使用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"
    }
  ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM