Arrays 在Ruby中将哈希数组映射到键控哈希
我有一个哈希数组,如下所示:Arrays 在Ruby中将哈希数组映射到键控哈希,arrays,ruby,hash,Arrays,Ruby,Hash,我有一个哈希数组,如下所示: array= [ { "id"=> 101, "first_name"=> "xxx", "last_name"=> "G", "email"=> "xxx@yyyy.com", "phone_number"=> "555-555-5555" }, { "id"=> 102, "
array= [
{
"id"=> 101,
"first_name"=> "xxx",
"last_name"=> "G",
"email"=> "xxx@yyyy.com",
"phone_number"=> "555-555-5555"
},
{
"id"=> 102,
"first_name"=> "Jen",
"last_name"=> "P",
"email"=> "jen.p@example.com",
"phone_number"=> "555-555-5555"
}
]
array = {
"101"=>
{
"first_name"=> "xxx",
"last_name"=> "G",
"email"=> "xxx@yyyy.com",
"phone_number"=> "555-555-5555"
},
"102"=>
{
"first_name"=> "Jen",
"last_name"=> "P",
"email"=> "jen.p@example.com",
"phone_number"=> "555-555-5555"
}
}
我想将其转换为如下所示的哈希:
array= [
{
"id"=> 101,
"first_name"=> "xxx",
"last_name"=> "G",
"email"=> "xxx@yyyy.com",
"phone_number"=> "555-555-5555"
},
{
"id"=> 102,
"first_name"=> "Jen",
"last_name"=> "P",
"email"=> "jen.p@example.com",
"phone_number"=> "555-555-5555"
}
]
array = {
"101"=>
{
"first_name"=> "xxx",
"last_name"=> "G",
"email"=> "xxx@yyyy.com",
"phone_number"=> "555-555-5555"
},
"102"=>
{
"first_name"=> "Jen",
"last_name"=> "P",
"email"=> "jen.p@example.com",
"phone_number"=> "555-555-5555"
}
}
我尝试过这个方法,但不起作用:
array.each do |a|
a.map{|x| x[:id]}
end
我怎么用Ruby做这个?我正在查看map函数,但不确定在这种情况下如何实现它。请帮忙 这项工作(说明性):
本工程(说明性):
试试这个:
array_h = Hash.new
array.each{|a| array_h[a["id"]] = a.reject{|e| e=='id' }}
#Output of array_h:
{
101=>
{
"first_name"=>"xxx",
"last_name"=>"G",
"email"=>"xxx@yyyy.com",
"phone_number"=>"555-555-5555"
},
102=>
{
"first_name"=>"Jen",
"last_name"=>"P",
"email"=>"jen.p@example.com",
"phone_number"=>"555-555-5555"
}
}
注意:这不会修改原始阵列。请尝试以下操作:
array_h = Hash.new
array.each{|a| array_h[a["id"]] = a.reject{|e| e=='id' }}
#Output of array_h:
{
101=>
{
"first_name"=>"xxx",
"last_name"=>"G",
"email"=>"xxx@yyyy.com",
"phone_number"=>"555-555-5555"
},
102=>
{
"first_name"=>"Jen",
"last_name"=>"P",
"email"=>"jen.p@example.com",
"phone_number"=>"555-555-5555"
}
}
注意:这不会修改原始阵列。非破坏性变体(保留阵列
),同时删除“id”
:
非破坏性变体(保留阵列
),同时删除“id”
:
@请看我的编辑,你的散列数组语法错误,它不是Ruby散列,看起来像javascript
json
@谢谢你的指点。我正在使用json库将其转换为ruby哈希。但我的问题仍然是请看编辑这与数组中的groupu by
的输出非常相似。groupu by{a | a[:id]}
请看我的编辑总是这样,你的哈希数组语法错误,不是Ruby哈希,它看起来像javascriptjson
@好的,谢谢你的指点。我正在使用json库将其转换为ruby哈希。但我的问题仍然是请看编辑这与数组中的groupby
的输出非常相似。groupu by{a | a[:id]}
。这实际上并没有返回OP所要求的内容。它返回另一个散列数组,并将每个原始散列包装成另一个散列。其他用户提供了正确的解决方案。自从Ruby 2.1以来,还可以使用x.to_h
而不是Hash[x]
。主要是审美上的差异。这并没有真正回应OP的要求。它返回另一个散列数组,并将每个原始散列包装成另一个散列。其他用户提供了正确的解决方案。自从Ruby 2.1以来,还可以使用x.to_h
而不是Hash[x]
。主要是审美差异。