[解決済み] ハッシュからサブハッシュを取り出すには?
2022-12-03 05:43:12
質問
ハッシュがあります。
h1 = {:a => :A, :b => :B, :c => :C, :d => :D}
このようなサブハッシュを抽出するのに最適な方法は何でしょうか?
h1.extract_subhash(:b, :d, :e, :f) # => {:b => :B, :d => :D}
h1 #=> {:a => :A, :c => :C}
どのように解決するのですか?
具体的には、抽出された要素を返すが、h1はそのままで良いという場合です。
h1 = {:a => :A, :b => :B, :c => :C, :d => :D}
h2 = h1.select {|key, value| [:b, :d, :e, :f].include?(key) } # => {:b=>:B, :d=>:D}
h1 = Hash[h1.to_a - h2.to_a] # => {:a=>:A, :c=>:C}
そして、それをHashクラスにパッチする場合。
class Hash
def extract_subhash(*extract)
h2 = self.select{|key, value| extract.include?(key) }
self.delete_if {|key, value| extract.include?(key) }
h2
end
end
指定した要素をハッシュから削除したいだけなら、もっと簡単に delete_if .
h1 = {:a => :A, :b => :B, :c => :C, :d => :D}
h1.delete_if {|key, value| [:b, :d, :e, :f].include?(key) } # => {:a=>:A, :c=>:C}
h1 # => {:a=>:A, :c=>:C}
関連
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] JavaでMD5ハッシュを生成するにはどうすればよいですか?
-
[解決済み] Rubyで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Javascriptで文字列からHashを生成する
-
[解決済み] 特定のキーがハッシュ内に存在するかどうかを確認する方法は?
-
[解決済み] Ruby/RailsでHashからキーを削除して残りのHashを取得する方法は?
-
[解決済み] node.jsのハッシュ文字列?
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み] Sinatraがファイルを変更するたびに自動で再読み込みするようにするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 辞書のスライス
-
[解決済み] このタスクを実行するには、Ruby と Sass をインストールし、PATH に配置する必要があります」という警告を解決するには?
-
[解決済み] 今月の名前(Date.today.monthをnameに変換)。
-
[解決済み] doブロックと中括弧{}の使い分け
-
[解決済み] 既存の文字列に追加する
-
[解決済み] Rubyで2つの配列のマージとインターリーブ
-
[解決済み] Rubyでディレクトリを再帰的にリストアップするためのワンライナー?
-
[解決済み] Mavericks と Xcode 5.1 で Ruby Gem install Json が失敗する - unknown argument: '-multiply_definedsuppress'.
-
[解決済み] メソッド名の最後にある「!」や「?」は何のため?
-
[解決済み] FactoryGirlのbuildメソッドとcreateメソッドの違いは何ですか?