我正在尝试从示例中删除id
和name
以及001
的整行:
002
我尝试过以下操作,但似乎无效:
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] }
中的2和任何匹配,它只会删除remove_ele
中的整个行/元素。
请以红宝石的方式协助以最佳方式执行此操作。
答案 0 :(得分:4)
您已向delete_if
提供此块的问题:
sample.delete_if { |key, value| sample[x]["id"] == remove_ele[x] }
由于sample
是一个哈希数组,因此使用delete_if
迭代器会将哈希传递给块。即它应该是|hash|
而不是|key, value|
。
其次,您的区块中不会定义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'] }
答案 1 :(得分:1)
sample.delete_if {|x| remove_ele.include? x['id'] }