Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays ruby如何从哈希数组中删除元素?_Arrays_Ruby_Hash_Hashmap - Fatal编程技术网

Arrays ruby如何从哈希数组中删除元素?

Arrays ruby如何从哈希数组中删除元素?,arrays,ruby,hash,hashmap,Arrays,Ruby,Hash,Hashmap,我试图从示例中删除001和002的id和名称的整行: sample = [{"id"=>"000", "name"=>"Bob"}, {"id"=>"001", "name"=>"Sally"}, {"id"=>"002", "name"=>"Spike"}, {"id"=>"003", "name"=>"Junior"}, {"id"=>"004", "name"=>"Tater"}] rem

我试图从示例中删除001和002的id和名称的整行:

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_如果{| key,value | sample[x][id]==remove|ele[x]}

本质上,我试图比较2和remove_ele中的任何匹配,它只会删除示例中的整个行/元素


请在ruby中以最佳方式提供帮助。

如果出现以下情况,您提供的用于删除\u的块存在一些问题:

由于sample是一个散列数组,所以使用delete_if迭代器将散列传递给块。也就是说,它应该是|散列|,而不是|键、值|

其次,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'] }

在以下情况下,您为删除\u提供的此块存在一些问题:

由于sample是一个散列数组,所以使用delete_if迭代器将散列传递给块。也就是说,它应该是|散列|,而不是|键、值|

其次,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'] }

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

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

!Upvot,因为您提供了代码解释!由于缺乏解释,投票被否决。提供没有解释的代码对由于缺乏解释而投票的opDown没有任何作用。提供没有解释的代码对op没有任何作用