2016-04-26 11 views
1

を反復処理:また、すべてをループしながら、私は、すべてのkeyNを反復処理するにはどうすればよいルビー - 私はこのようになりますハッシュ持つキー/配列値のペアを含むハッシュを反復処理し、各値

{ 
    "key1": [ 
    "value1", 
    "value2", 
    "value3" 
    ], 
    "key2": [ 
    "value1", 
    "value2", 
    "value3", 
    "value4", 
    "value5" 
    ], 
    "key3": [ 
    "value1" 
    ], 
    "key4": [ 
    "value1", 
    "value2" 
    ] 
} 

をそのキーの値は?

私はすべてのキーを持つ配列を持っています。本当に

+0

が重複する可能性をRubyでハッシュを繰り返すのですか?](http://stackoverflow.com/questions/1227571/how-to-iterate-over-a-hash-in-ruby) – Hamms

答えて

2

非常にシンプル

おかげで、:

hash.each do |name, values| 
    values.each do |value| 
    # ... 
    end 
end 

あなたは最低レベルでnamevalueであなたがやりたいことができます。

+0

実際には単純です。間違った方法でそれを見ていました。おかげで – user6127511

+0

あなたはそれのハングアップを取得したら、このパターンは様々な状況で動作することがわかります。 '.each'はほとんどのRubyアプリケーションのバックボーンです。 – tadman

2

あなたはこのようにそれを行うことができます、あなたは配列のサイズについて確信している場合は、単にあなたがこのように行うことができます

hash.each do |key, array| 
    array.each do |value| 
    # do something 
    end 
end 
1
hash.each do |key_N, values_N| 
    values_N.each so |values| 
    . 
    . 
    #YourCode 
    . 
    . 
    end 
end 
+0

'keyN'のような名前は' key_n'でなければなりません。大文字は、特にCONSTANT_NAMESとClassNamesの場合に重要な意味を持ちます。 – tadman

+0

@tadmanそれを指摘していただきありがとうございます。私は私の答えを更新しました。 –

+0

アクセスしてください。一般的に、首都は変数名で完全には避けられます。ただ物事を混乱させるだけです。 – tadman

0

【使い方の

ha = {:a => [1,2]} 

ha.each do |k, (v1, v2)| 
    p k 
    p v1 
    p v2 
end 

Output 
:a 
1 
2 
関連する問題