search
LoginSignup
135

More than 3 years have passed since last update.

posted at

updated at

配列やハッシュで合計値を求める時の書き方まとめ

Rubyで配列やハッシュで合計値を求めたい時の書き方たち

配列

配列に入っている値すべてを合計したい時

# 配列に入っている値すべてを合計したい時
array = [1,2,3,4,5,6,7,8,9,10]
array.inject(:+)
  • Railsだと以下のようにも書けます
# 配列に入っている値すべてを合計したい
array = [1,2,3,4,5,6,7,8,9,10]
array.sum

条件を満たすものだけを合計したい

# 偶数のものだけを合計したい
array = [1,2,3,4,5,6,7,8,9,10]
array.select{ |num| num %2 == 0 }.inject(:+)

selectは、条件に合う要素だけで新しく配列を作ります。
新しく作られた配列に対して、合計します。
http://ref.xaio.jp/ruby/classes/array/select

Ruby2.4からはsumが使えるようになったのでsumを使って書いたほうが簡潔でわかりやすくかけます。

# 偶数のものだけを合計したい
array = [1,2,3,4,5,6,7,8,9,10]
array.sum{ |num| num %2 == 0 }

Hash

Hashに入っているすべてのvalueを合計したい

# すべてのvalueを合計したい
hash = {a: 10, b: 20, c: 30, d: 40, f: 50}
hash.values.inject(:+)

配列内のハッシュ

特定のkeyのvalueだけ合計したい

# keyがnumberのvalueを合計したい
scores = [{ id: 1, number: 20 }, { id: 2, number: 30}, { id: 3, number: 40}]
scores.inject(0) {|sum, hash| sum + hash[:number]}
  • Railsだと以下のようにも書けます
# keyがnumberのvalueを合計したい
scores = [{ id: 1, number: 20 }, { id: 2, number: 30}, { id: 3, number: 40}]
scores.sum { |hash| hash[:number]}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
135