使用数组中的键迭代哈希值,并对结果求和

时间:2015-10-30 20:04:30

标签: ruby ruby-2.2

我有一个Hash将一堆ID索引为一个值,如:

hash = {1: 3.00, 2: 4.00, 3: 2.00, 4: 15.00, 5: 12.00, 6: 1.00}

我有一个看起来像的数组:

arr = [2, 3, 6]

什么是一种简短的Ruby惯用方法来迭代我的数组并从哈希中的相应键中累加累计总数?

上述结果相同:

4.00 + 2.00 + 1.00 == 7.00

3 个答案:

答案 0 :(得分:9)

你可能无法获得比这更好的红宝石了!)

hash.values_at(*arr).reduce(:+)

答案 1 :(得分:1)

hash = {1=>3.0, 2=>4.0, 3=>2.0, 4=>15.0, 5=>12.0, 6=>1.0}
arr = [2, 3, 6]

arr.reduce(0) { |t,e| t + hash[e] }
   #=> 7.0

答案 2 :(得分:0)

arr.map {|i| hash[i]}.reduce(:+)