如何将哈希数组组合成一个数组?

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

【讨论】:

以上是关于如何将哈希数组组合成一个数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何把2个数组合并为一个数组

如何将数组内的数组组合成一个数组? [复制]

Perl:组合两个哈希数组的值并使第二个数组的值成为输出哈希的键

如何将数组元素组合成一个新数组?

如何将两个firebase集合组合成一个新的对象数组

将多个 numpy 数组组合成不同形状之一