1

我有一个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
4

3 回答 3

9

您可能无法获得比这更多的红宝石 :)

hash.values_at(*arr).reduce(:+)
于 2015-10-30T20:08:50.723 回答
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
于 2015-11-24T06:56:46.247 回答
0
arr.map {|i| hash[i]}.reduce(:+)
于 2015-10-30T20:06:05.833 回答