LoginSignup
1
0

More than 1 year has passed since last update.

【解決済】Rubyで配列内のハッシュで同じキーの値を合算(inject、merge)

Posted at

ポートフォリオ作成中に、「同一のキーを合算して、値を求める」必要があり、実装に時間を要したため、備忘録として投稿します。

実現したいこと

data = [
  { water: 9, retort_food: 3, mask: 3 },
  { water: 10, retort_food: 4, mask: 4 },
  { water: 11, retort_food: 5, mask: 5 }
]

# 上記のデータで同じキーのものを合算
# data = { water: 30, retort_food: 12, mask: 12 }

完成形

merge_data = data.inject do |old_data, new_data|
  old_data.merge(new_data) do |_key, old_val, new_val|
    old_val + new_val
  end
end

使用したメソッド

inject

  • 配列等の要素を一つずつ繰り返して、ブロック内で処理する

参考:https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/inject.html

merge

  • 同一のキーを持つ値を結合する
  • ブロック付きの場合、ブロックを呼び出してその返す値を重複キーに対応する値にする。

参考:https://docs.ruby-lang.org/ja/latest/method/Hash/i/merge.html


injectで配列内の要素を一つずつ取り出して、mergeにより同一キーをもつ値を結合していく処理ができました!

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

1
0
1

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
1
0