🔖

【メモ】同じキーを持つ要素でまとめる【ruby】

2023/05/22に公開
data = [
  { key1: 1000, key2: 200 },
  { key1: 1000, key2: 201 },
  { key1: 1001, key2: 202 },
  { key1: 1001, key2: 203 }
]

result = []
data.each do |item|
  # 既存の結果リストから同じkey1の要素を探す
  category = result.find { |cat| cat[:key1] == item[:key1] }

  if category
    # 既存の要素がある場合、key2を追加する
    category[:key2s] << item[:key2]
  else
    # 既存の要素がない場合、新しい要素を追加する
    result << { key1: item[:key1], key2s: [item[:key2]] }
  end
end

# 結果
[
  {"key1": 1000,"key2s": [ 200,201]},
  {"key1": 1001,"key2s": [ 202,"203]},
]

Discussion