Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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/23.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 - Fatal编程技术网

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"=>[]}}