从Ruby Hash中选择项目

时间:2013-03-08 17:30:49

标签: ruby hash

我在Ruby中有一个哈希,看起来像这样:

{"NameValues"=>[
    {"Name"=>"Field 1", "Values"=>["Data 1"]}, 
    {"Name"=>"Field 2", "Values"=>["Data 2"]}, 
    {"Name"=>"Field 3", "Values"=>["Data 3"]}, 
    {"Name"=>"Field 4", "Values"=>["Data 4"]}, 
    {"Name"=>"Field 5", "Values"=>["Data 5"]}
]}

我想通过使用“Names”元素中的名称来选择“Values”元素的内容,例如,通过搜索“Field 3”等找到“Data 3”字符串。

1 个答案:

答案 0 :(得分:3)

您可以使用Enumerable#find方法按名称查找哈希:

hash = {"NameValues"=>[
    {"Name"=>"Field 1", "Values"=>["Data 1"]}, 
    {"Name"=>"Field 2", "Values"=>["Data 2"]}, 
    {"Name"=>"Field 3", "Values"=>["Data 3"]}, 
    {"Name"=>"Field 4", "Values"=>["Data 4"]}, 
    {"Name"=>"Field 5", "Values"=>["Data 5"]}
]}

p hash['NameValues'].find{ |h| h['Name'] == 'Field 3'}['Values']
#=> ["Data 3"]

find基本上遍历NameValues数组,直到找到匹配的元素。然后,您可以从返回的元素中获取Values