加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – rails / ruby??合并两个具有相同键,不同值的哈

发布时间:2020-12-17 03:56:11 所属栏目:百科 来源:网络整理
导读:我有两个哈希,我想合并.它们看起来像这样: [{"Hello"-"3"},{"Hi"-"43"},{"Hola"-"43"}] 第二个哈希看起来像: [{"Hello"-"4"},{"Hi"-"2"},{"Bonjour"-"2"}] 我想合并这两个哈希数组,以便结果如下: [{"Hello"-[{value1=3},{value2=4}],{"Hi"-[{value1=43},{
我有两个哈希,我想合并.它们看起来像这样:

[{"Hello"->"3"},{"Hi"->"43"},{"Hola"->"43"}]

第二个哈希看起来像:

[{"Hello"->"4"},{"Hi"->"2"},{"Bonjour"->"2"}]

我想合并这两个哈希数组,以便结果如下:

[{"Hello"->[{value1=>3},{value2=>4}],{"Hi"->[{value1=>43},{value2=>2}]},{"Bonjour"->[{value1=>0},{"Hola"->[{value1=>43},{value2=>0}]]

有没有一种简单的方法来合并这两个哈希值,还是我必须单独遍历哈希值并在另一个哈希值中找到该键?

解决方法

最简单的方法是将哈希数组转换为哈希值:

h1 = a1.reduce(&:merge)
# => {"Hello"=>"3","Hi"=>"43","Hola"=>"43"}
h2 = a2.reduce(&:merge)
# => {"Hello"=>"4","Hi"=>"2","Bonjour"=>"2"}

然后你需要找到所有的键:

keys = [h1,h2].flat_map(&:keys).uniq
 # => ["Hello","Hi","Hola","Bonjour"]

接下来,为每个键构建值数组:

keys.map do |k| 
  {k => [{value1: h1[k] || "0"},{value2: h2[k] || "0"}]}
end
# => [{"Hello"=>[{:value1=>"3"},{:value2=>"4"}]},#     {"Hi"=>[{:value1=>"43"},{:value2=>"2"}]},#     {"Hola"=>[{:value1=>"43"},{:value2=>"0"}]},#     {"Bonjour"=>[{:value1=>"0"},{:value2=>"2"}]}]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读