从Ruby哈希中选择项
我在Ruby中有一个哈希,如下所示:从Ruby哈希中选择项,ruby,hash,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"
{"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"]}
]}
我想使用“名称”元素中的名称来选择“值”元素的内容,例如,通过搜索“字段3”等来定位“数据3”字符串。您可以使用该方法按名称查找哈希:
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
数组,直到找到匹配的元素。然后,您可以从返回的元素中获取值。您可以使用该方法按名称查找哈希:
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
数组,直到找到匹配的元素。然后,您可以从返回的元素中获取值。您可能需要查看重构生成哈希的代码。散列不是很有用,因为它迫使你跳转,应该/可以简化为一个,其中每个“名称”值实际上是指向“值”值的键。是的,我同意-不幸的是,我无法控制这些位。你可能想看看重构生成散列的代码。散列不是很有用,因为它迫使你跳转,应该/可以简化为一个,其中每个“名称”值实际上是指向“值”值的键。是的,我同意-不幸的是,我无法控制这些位。