我有一个哈希数组
players = [{:id=>1, :name=>"Alda", :dice_count=>5, :hand=>[6, 5, 2, 4, 3]},
{:id=>2, :name=>"Gonzalo", :dice_count=>5, :hand=>[1, 5, 1, 1]},
{:id=>3, :name=>"Markus", :dice_count=>5, :hand=>[6, 2, 5, 1]},
{:id=>4, :name=>"Luella", :dice_count=>5, :hand=>[4, 5, 1, 6, 5]}]
,我想对数组中每个:hand
值的大小求和。有什么简单的方法吗?
所以输出将是每个:hand.size
的和。在上面的例子中,输出将是18
players.map { |player| player[:hand].size }.reduce(:+) # => 18
一次性解决方案:
players.inject(0) { | a, e | a + e[:hand].size }
# => 18
注意inject
只是reduce
的另一个名称。
这只是为了好玩,假设hand
总是散列中的最后一个元素。
p players.map(&:flatten).map(&:last).map(&:size).reduce(:+)