如何将两个不同散列数组的值一起添加?

Cha*_*ory 3 ruby arrays hash

我有两个哈希数组.哈希的键是不同的:

player_scores1 = [{:first_name=>"Bruce", :score => 43, :time => 50},
                  {:first_name=>"Clark", :score => 45, :minutes => 20}]

player_scores2 = [{:last_name=>"Wayne", :points => 13, :time => 40},
                  {:last_name=>"Kent", :points => 3, :minutes => 20}]
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的哈希数组,它们加起来:得分和:一起指向并将其分配给一个名为:score的键.我还想组合:first_name和:last_name并将其分配给名为:full_name的键.我想丢弃任何其他钥匙.

这将导致这个数组:

all_players = [{:full_name => "Bruce Wayne", :score => 56}, 
               {:full_name => "Clark Kent", :score => 48}]
Run Code Online (Sandbox Code Playgroud)

有一种优雅的方式来做到这一点?

Nak*_*lon 8

像这样的东西:

player_scores1.zip(player_scores2).map { |a,b|
    {
        :full_name => a[:first_name]+' '+b[:last_name],
        :score => a[:score]+b[:points]
    }
}
Run Code Online (Sandbox Code Playgroud)

  • +1,但我认为在多行块上使用do-end是惯用的Ruby. (2认同)