0

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

4

1 回答 1

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从返回的元素中获取 。

于 2013-03-08T17:44:56.157 回答