首页 > 解决方案 > 如何将哈希数组组合成一个数组?

问题描述

我正在尝试组合这样的哈希数组:

[{:locale=>:"en-US", :key=>:key1}, 
 {:locale=>:"en-US", :key=>:key2}, 
 {:locale=>:da,      :key=>:key1}]

像这样进入一个数组:

['locale', 'en-US', 'key', 'key1', 
 'locale', 'en-US', 'key', 'key2', 
 'locale', 'da',    'key', 'key1']

我怎样才能做到这一点?

标签: arraysrubyhash

解决方案


Input

a=[{:locale=>:"en-US", :key=>:key1}, {:locale=>:"en-US", :key=>:key2}, {:locale=>:da, :key=>:key1}]

Code

result=a.map do |h|
  h.map do|k,v|
    [k,v]
  end
end.flatten
p result

Or

p a.flat_map(&:to_a).flatten

Output

[:locale, :"en-US", :key, :key1, :locale, :"en-US", :key, :key2, :locale, :da, :key, :key1]

推荐阅读