2016-08-09 14 views
0

私はサンプルから001002ためidnameのための行全体を削除しようとしています:ruby​​どのようにハッシュ配列から要素を削除するには?

sample = [{"id"=>"000", "name"=>"Bob"}, 
    {"id"=>"001", "name"=>"Sally"}, 
    {"id"=>"002", "name"=>"Spike"}, 
    {"id"=>"003", "name"=>"Junior"}, 
    {"id"=>"004", "name"=>"Tater"}] 

remove_ele = ["001","002"] 

私は次のことを試してみましたが、動作していないよう:

sample.delete_if { |key, value| sample[x]["id"] == remove_ele[x] }

本質的に、私はremove_eleの2と任意のマッチを比較しようとしています。sampleの行/要素全体を削除するだけです。

ルビーでこれを行うには、最善の方法をお手伝いしてください。

答えて

4

あなたはdelete_ifに提供してきました。このブロックにはいくつかの問題があります:sample以来

sample.delete_if { |key, value| sample[x]["id"] == remove_ele[x] } 

がブロックにハッシュを渡すdelete_ifイテレータを使用して、ハッシュの配列です。私。 |key, value|の代わりに|hash|にする必要があります。

第2に、xはあなたのブロックに定義されません。

機能液は、これを次のようになります。同じことをまた

remove_ele.each do |id_to_remove| 
    sample.delete_if { |hash| hash['id'] == id_to_remove } 
end 

、:

sample.delete_if { |hash| remove_ele.include? hash['id'] } 
+0

Upvottedをあなたのコードと説明を提供するために! –

1

sample.delete_if {|x| remove_ele.include? x['id'] }

+0

説明の欠如のため投票が行われませんでした。説明なしでコードを提供すると、op –

関連する問題