"000", "name"=>"Bob"}, {"id"=>"001", "na-6ren">
gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:16 25 4
gpt4 key购买 nike

我正在尝试从示例中删除 idname 的整行 001002 :

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 { |键,值|示例[x]["id"] == remove_ele[x] }

本质上,我正在尝试比较 2 和 remove_ele 中的任何匹配项,它只会删除 sample 中的整个行/元素。

请协助以最佳方式在 ruby​​ 中执行此操作。

最佳答案

您提供给 delete_if 的这个 block 存在一些问题:

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

由于 sample 是一个散列数组,使用 delete_if 迭代器会将散列传递给 block 。 IE。它应该是 |hash| 而不是 |key, value|

其次,x 不会在您的 block 中定义。

一个实用的解决方案是这样的:

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'] }

关于arrays - ruby 如何从哈希数组中删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38861432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com