Ruby on rails Ruby-展平数组和散列的散列

Ruby on rails Ruby-展平数组和散列的散列,ruby-on-rails,arrays,ruby,hash,flatten,Ruby On Rails,Arrays,Ruby,Hash,Flatten,关于将散列整平的主题已经写了很多,但是我找不到关于我的情况的任何信息 我有一个散列数组的散列,等等 比如: { :medical_address => [ { :address_1 => nil, :city => nil, :state => nil, :zip5 => nil, :zip9 => nil } ], :pharmacy_address => [

关于将散列整平的主题已经写了很多,但是我找不到关于我的情况的任何信息

我有一个散列数组的散列,等等

比如:

{
  :medical_address => [
    {
      :address_1 => nil,
      :city => nil,
      :state => nil,
      :zip5 => nil,
      :zip9 => nil
    }
  ],
  :pharmacy_address => [
    {
      :address_1 => nil,
      :city => nil,
      :state => nil,
      :zip5 => nil,
      :zip9 => nil
    }
  ],
  :address => [],
  :member_phone => "8000000000",
  :provider_phone => nil,
  :phone => [
    "800-000-0000",
    "8000000000",
    "800-000-0000",
    "8000000000",
    "800-624-5060",
    "8006245060",
    "804-673-1678",
    "8046731678",
    "888-258-3432",
    "8882583432",
    "800-000-0000",
    "8000000000",
    "800-000-0000",
    "8000000000",
    "800-000-0000",
    "8000000000",
    "800-624-5060",
    "8006245060",
    "804-673-1678",
    "8046731678",
    "888-258-3432",
    "8882583432"
  ],
  :website => [
    "www.fopblue.org",
    "www.fepblue.org",
    "www.fepblue.org",
    "www.fopblue.org"
  ]
}
我想把它展平成一个数组

有人手头有一个简单的递归函数来做这个吗? 我预计结果如下:

[:medical_address,:address_1, nil, :city, nil, :state, nil, :zip5, nil, :zip9, nil, :pharmacy_address, :address_1, nil, :city, nil, :state, nil, :zip5, nil, :zip9, nil,, :address,, :member_phone, "8000000000", :provider_phone, nil, :phone,"800-000-0000", "8000000000", "800-000-0000", "8000000000", "800-624-5060", "8006245060", "804-673-1678", "8046731678", "888-258-3432", "8882583432", "800-000-0000", "8000000000", "800-000-0000", "8000000000", "800-000-0000", "8000000000", "800-624-5060", "8006245060", "804-673-1678", "8046731678", "888-258-3432", "8882583432", :website,"www.fopblue.org", "www.fepblue.org", "www.fepblue.org", "www.fopblue.org"] 

如果您对使用gem很满意,那么有一个多用途gem


请注意,展平是可逆的,
result.recoger
将返回散列。

您可以为上面的散列添加预期的输出吗?
input = [your structure]
input.iteraptor.flatten
# ⇒ {"medical_address.0.address_1"=>nil,
#    "medical_address.0.city"=>nil,
#    "medical_address.0.state"=>nil,
#    "medical_address.0.zip5"=>nil,
#    "medical_address.0.zip9"=>nil,
#    "pharmacy_address.0.address_1"=>nil,
#    "pharmacy_address.0.city"=>nil,
#    "pharmacy_address.0.state"=>nil,
#    "pharmacy_address.0.zip5"=>nil,
#    "pharmacy_address.0.zip9"=>nil,
#    "member_phone"=>"8000000000",
#    "provider_phone"=>nil,
#    "phone.0"=>"800-000-0000",
#    "phone.1"=>"8000000000",
#    "phone.2"=>"800-000-0000",
#    "phone.3"=>"8000000000",
#    "phone.4"=>"800-624-5060",
#    "phone.5"=>"8006245060",
#    "phone.6"=>"804-673-1678",
#    "phone.7"=>"8046731678",
#    "phone.8"=>"888-258-3432",
#    "phone.9"=>"8882583432",
#    "phone.10"=>"800-000-0000",
#    "phone.11"=>"8000000000",
#    "phone.12"=>"800-000-0000",
#    "phone.13"=>"8000000000",
#    "phone.14"=>"800-000-0000",
#    "phone.15"=>"8000000000",
#    "phone.16"=>"800-624-5060",
#    "phone.17"=>"8006245060",
#    "phone.18"=>"804-673-1678",
#    "phone.19"=>"8046731678",
#    "phone.20"=>"888-258-3432",
#    "phone.21"=>"8882583432",
#    "website.0"=>"www.fopblue.org",
#    "website.1"=>"www.fepblue.org",
#    "website.2"=>"www.fepblue.org",
#    "website.3"=>"www.fopblue.org"}