🔖
【メモ】同じキーを持つ要素でまとめる【ruby】
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