Arrays 仅从Ruby哈希中删除一个值
我有以下散列:Arrays 仅从Ruby哈希中删除一个值,arrays,ruby,hash,Arrays,Ruby,Hash,我有以下散列: myhash = { "csv-collector" => { "destination-queues" => ["csv-parser-queue"] }, "csv-parser" => { "source-queue" => "csv-parser-queue", "destination-queues" => ["mtf-asn-lookup-expert-queue"] } } 我想删除值mtf a
myhash = {
"csv-collector" => {
"destination-queues" => ["csv-parser-queue"]
},
"csv-parser" => {
"source-queue" => "csv-parser-queue",
"destination-queues" => ["mtf-asn-lookup-expert-queue"]
}
}
我想删除值mtf asn lookup expert queue
,保留如下哈希:
myhash = {
"csv-collector" => {
"destination-queues" => ["csv-parser-queue"]
},
"csv-parser" => {
"source-queue" => "csv-parser-queue",
"destination-queues"=>[]
}
}
我有以下代码:
tag = "mtf"
myhash.each_pair do |key, value|
value.delete_if { |inner_key, inner_value| inner_value[0].match(tag) }
end
这给了我这个输出:
{
"csv-collector" => {
"destination-queues" => ["csv-parser-queue"]
},
"csv-parser" => {
"source-queue" => "csv-parser-queue"
}
}
它删除键和值,我只想删除值。你们能帮帮我吗?:)
谢谢!!:D在代码中,
value
引用内部哈希,因此value。如果试图从中删除键值对,请删除\u
要从所有目标队列
数组中删除包含“mtf”
的任何值,可以使用:
tag = 'mtf'
myhash.each_value do |inner_hash|
inner_hash['destination-queues'].delete_if { |element| element.include? tag }
end
代码假设每个内部散列都包含一个目标队列数组。您能解释一下您想做什么吗?是否要从所有目标队列
数组中删除任何包含“mtf”
的值?是的,这正是我要做的@Stefan非常感谢:D@Stefan
myhash.each {|_,g| g.each {|_,v| v.replace([]) if Array===v && v.first.match('mtf')}}
#=> {"csv-collector"=>{"destination-queues"=>["csv-parser-queue"]},
# "csv-parser"=>{"source-queue"=>"csv-parser-queue", "destination-queues"=>[]}}