Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Ruby哈希中选择项_Ruby_Hash - Fatal编程技术网

从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"

我在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"]}
]}
我想使用“名称”元素中的名称来选择“值”元素的内容,例如,通过搜索“字段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
数组,直到找到匹配的元素。然后,您可以从返回的元素中获取
值。

您可能需要查看重构生成哈希的代码。散列不是很有用,因为它迫使你跳转,应该/可以简化为一个,其中每个“名称”值实际上是指向“值”值的键。是的,我同意-不幸的是,我无法控制这些位。你可能想看看重构生成散列的代码。散列不是很有用,因为它迫使你跳转,应该/可以简化为一个,其中每个“名称”值实际上是指向“值”值的键。是的,我同意-不幸的是,我无法控制这些位。