Railsのハッシュで1つの値に対して2つのキーを設定する
概要
ハッシュがあるとしましょう:
{
first: :value1,
second: :value1,
third: :value2
}
.map の作成中に重複を削除する必要があるため、最初または 2 番目のみにする必要があります。次のような回避策は可能ですか:
{
(:first || :second) => :value1,
third: :value2
}
そうでない場合、条件に基づいてハッシュ内のキーの重複を削除するにはどうすればよいですか? .uniq ブロックに条件を渡すことはできますか?
ありがとう、
解決策
hsh =
{
first: :value1,
second: :value1,
third: :value2
}
hsh.uniq { _2 }.to_h
# => {:first=>:value1, :third=>:value2}
まず、ブロックと番号付きパラメータを指定して uniq を呼び出します。 2 番目の要素が一意である配列の配列を返します (最初のペアを取得します)。
ary = hsh.uniq { _2 }
# => [[:first, :value1], [:third, :value2]]
そして配列をハッシュに変換します
ary.to_h
# => {:first=>:value1, :third=>:value2}