7

ハッシュがあり、そのキーと値を抽出しようとしています。ハッシュには、ネストされたハッシュおよび/またはハッシュの配列があります。

このサイトといくつかのサンプルを確認した後、キーと値を取得しました。しかし、ハッシュの配列である場合、抽出が困難です。

例:

{
  :key1 => 'value1',
  :key2 => 'value2',
  :key3 => {
    :key4 => [{:key4_1 => 'value4_1', :key4_2 => 'value4_2'}],
    :key5 => 'value5'
  },
  :key6 => {
    :key7 => [1,2,3],
    :key8 => {
      :key9 => 'value9'
    }
  }
}

これまでのところ、Ruby でハッシュのハッシュをループし、Ruby で深くネストされたレベルのハッシュを反復処理する方法のコードを以下に示します。

def ihash(h)
  h.each_pair do |k,v|
    if v.is_a?(Hash) || v.is_a?(Array)
      puts "key: #{k} recursing..."
      ihash(v)
    else
      # MODIFY HERE! Look for what you want to find in the hash here
      puts "key: #{k} value: #{v}"
    end
  end
end

しかし、それはv.is_hash?(Array)またはで失敗しますv.is_a?(Array)

何か不足していますか?

4

3 に答える 3

1

v が配列またはハッシュの場合、ihash(v) を呼び出しています。配列の each_pair メソッド呼び出しは失敗します。

于 2013-05-07T06:02:29.863 に答える