171
134

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dots.女子部Advent Calendar 2016

Day 21

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

Last updated at Posted at 2016-12-21

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]}
171
134
2

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
  3. You can use dark theme
What you can do with signing up
171
134

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?