adb*_*ads 1 ruby arrays hash hashmap
我想删除整个一行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"]
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下方法,但似乎不起作用:
sample.delete_if { |key, value| sample[x]["id"] == remove_ele[x] }
本质上,我正在尝试比较2和其中的任何匹配项,remove_ele只会删除中的整个行/元素sample。
请以最佳方式协助您完成红宝石的制作。
您提供给此代码块有一些问题delete_if:
sample.delete_if { |key, value| sample[x]["id"] == remove_ele[x] }
Run Code Online (Sandbox Code Playgroud)
由于sample是哈希数组,因此使用delete_if迭代器会将哈希传递给该块。即应该|hash|代替|key, value|。
其次,x不会在您的块中定义。
一个有效的解决方案是:
remove_ele.each do |id_to_remove|
sample.delete_if { |hash| hash['id'] == id_to_remove }
end
Run Code Online (Sandbox Code Playgroud)
另外,它做同样的事情:
sample.delete_if { |hash| remove_ele.include? hash['id'] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |