どうも、ちょげ(@chogetarou)です。
ハッシュ(Hash)の合計値を取得する方法を紹介します。
方法

ハッシュ(Hash)の合計値を取得する方法は、3つあります。
sumメソッド
ひとつめは、sumメソッドを使う方法です。
まず、ハッシュからvaluesメソッドを呼び出します。
そして、valuesメソッドからsumメソッドを呼び出します。
#hash=対象のハッシュ
result = hash.values.sum
上記のsumメソッドは、呼び出したハッシュ(Hash)の合計値を取得します。
使用例
numbers = {
"one" => 1,
"two" => 2,
"three" => 3,
"four" => 4,
"five" => 5,
}
result = numbers.values.sum
puts result
出力:
15
injectメソッド
ふたつめは、injectメソッドを使う方法です。
まず、ハッシュからvaluesメソッドを呼び出します。
valuesメソッドからinjectメソッドを呼び出します。
そして、injectメソッドの引数に「:+」を指定します。
#hash=対象のハッシュ
result = hash.values.inject(:+)
上記のinjectメソッドは、呼び出したハッシュ(Hash)の合計値を取得します。
使用例
numbers = {
"one" => 1,
"two" => 2,
"three" => 3,
"four" => 4,
"five" => 5,
}
result = numbers.values.inject(:+)
puts result
出力:
15
ループ
みっつめは、ループを使う方法です。
まず、変数を用意します。
result = 0
次に、ハッシュをループします。
ループ処理で、ハッシュの値を変数に足します。
#hash=対象のハッシュ
hash.each { |k, v| result += v }
for k, v in hash
result += v
end
上記のループは、呼び出したハッシュ(Hash)の合計値を用意した変数に格納します。
使用例1
numbers = {
"one" => 1,
"two" => 2,
"three" => 3,
"four" => 4,
"five" => 5,
}
result = 0
numbers.each { |k, v| result += v }
puts result
出力:
15
使用例2
numbers = {
"one" => 1,
"two" => 2,
"three" => 3,
"four" => 4,
"five" => 5,
}
result = 0
for k, v in numbers
result += v
end
puts result
出力:
15
まとめ
ハッシュ(Hash)の合計値を取得する方法は、次の3つです。
- sumメソッドを使う方法
result = hash.values.sum
- injectメソッドを使う方法
result = hash.values.inject(:+)
- ループを使う方法
result = 0
hash.each { |k, v| result += v }
コメント