我在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”字符串。
答案 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
。