Rubyは本当に新しく、ハッシュから特定の値を1つ削除して、新しいハッシュを返す方法を理解しようとしています。
だから私がハッシュを持っていたら言う
{"within" => ["FID6", "S5"],
"uri"=>"/repositories/2/raps/7",
"is_repository_default"=>false}
"FID6"
値を削除して、その値なしで新しいハッシュを返すにはどうすればよいですか?私はしようとしました.delete("within")
が、それは私のコードを壊しました。
を使用Hash#transform_values
して、ハッシュの各値を反復処理し、配列の場合はそれらを変更して、新しいハッシュを返すことができます。
data = { "within" => ["FID6", "S5"], "uri"=>"/repositories/2/raps/7", "is_repository_default"=>false }
data.transform_values { |value| value.is_a?(Array) ? value - ['FID6'] : value }
# {"within"=>["S5"], "uri"=>"/repositories/2/raps/7", "is_repository_default"=>false}
または、持っているものから始めて新しいハッシュをマップするには:
data.map { |key, value| [key, value.is_a?(Array) ? value - ['FID6'] : value] }.to_h # {"within"=>["S5"], "uri"=>"/repositories/2/raps/7", "is_repository_default"=>false}
data.to_h { |key, value| [key, value.is_a?(Array) ? value - ['FID6'] : value] } # {"within"=>["S5"], "uri"=>"/repositories/2/raps/7", "is_repository_default"=>false}
Hash#to_h
Ruby2.6以降のブロックを受け入れる
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加