如何将哈希数组组合成一个数组?
Posted
技术标签:
【中文标题】如何将哈希数组组合成一个数组?【英文标题】:How to combine array of hashes into one array? 【发布时间】:2021-11-24 21:36:28 【问题描述】:我正在尝试像这样组合一个哈希数组:
[: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']
我该怎么做?
【问题讨论】:
请在寻求帮助之前尝试一下 【参考方案1】:输入
a=[:locale=>:"en-US", :key=>:key1, :locale=>:"en-US", :key=>:key2, :locale=>:da, :key=>:key1]
代码
result=a.map do |h|
h.map do|k,v|
[k,v]
end
end.flatten
p result
或者
p a.flat_map(&:to_a).flatten
输出
[:locale, :"en-US", :key, :key1, :locale, :"en-US", :key, :key2, :locale, :da, :key, :key1]
【讨论】:
另一个选项a.flat_map(&:flatten)
@rajagopalan 只要map
(没有flat_map
)也可以。
请注意,OP 希望构造一个字符串数组。【参考方案2】:
或者,更快更容易:
array = [:locale=>:"en-US", :key=>:key1, :locale=>:"en-US", :key=>:key2, :locale=>:da, :key=>:key1]
array.map |hash| [hash.keys, hash.values] .flatten
【讨论】:
以上是关于如何将哈希数组组合成一个数组?的主要内容,如果未能解决你的问题,请参考以下文章