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」要素の内容を選択したい。たとえば、「Field3」などを検索して「Data3」文字列を見つけます。

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 に答える