Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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-on-rails-4/2.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
hash的Ruby过滤数组_Ruby_Ruby On Rails 4_Hash_Filter - Fatal编程技术网

hash的Ruby过滤数组

hash的Ruby过滤数组,ruby,ruby-on-rails-4,hash,filter,Ruby,Ruby On Rails 4,Hash,Filter,我有以下参数数组,其中包含一个带有args键及其相关传递值的散列: args_array = [{:collection=>["abe", "<mus>", "hest"], :include_blank=>true, :required=>true}] 因此,集合arg被排除在外,只有我指定的include_blank和required才是返回的 更新: 下面是一组符号,我需要根据它们进行过滤: filter_keys = %i(include_blank re

我有以下参数数组,其中包含一个带有args键及其相关传递值的散列:

args_array = [{:collection=>["abe", "<mus>", "hest"], :include_blank=>true, :required=>true}]
因此,
集合
arg被排除在外,只有我指定的
include_blank
required
才是返回的

更新:

下面是一组符号,我需要根据它们进行过滤:

filter_keys = %i(include_blank required)

我如何才能做到这一点?

以下几点可以解决您的问题:

 args_array.collect {|a| a if a[:include_blank] == true && a[:required=>true] == true }.compact


以下方法可以解决您的问题:

 args_array.collect {|a| a if a[:include_blank] == true && a[:required=>true] == true }.compact

一种方法是使用:

请注意,
.dup
用于防止修改
args\u数组
,如果确实希望更新
args\u数组
,请不要使用它。

一种方法是使用:


请注意,
.dup
用于防止修改
args\u数组
,如果您确实希望更新
args\u数组
,请不要使用它。

您标记为Rails,以便可以使用:


您已标记为Rails,以便可以使用:


是,键=%i(需要包含\u blank)是,键=%i(需要包含\u blank)但我需要包含\u blank和required并返回它们的值,无论它们是真是假还是其他。因此,您想按包含\u blank和required对它们进行分组?但我需要包含\u blank和required并返回它们的值,它们是真的还是假的,或者其他什么。所以你想按include\u blank和required对它们进行分组?这会修改
args\u数组[0]
。如果我正确理解了这个问题,那么这种行为似乎不好(也许是这样)<在这种情况下,可以使用code>Hash#select。但这会修改
args\u数组[0]
。如果我正确理解了这个问题,那么这种行为似乎不好(也许是这样)<在这种情况下,可以使用代码>哈希#选择。
dup_list = args_array.dup
dup_list.delete_if {|a| !(a[:include_blank] == true && a[:required=>true] == true) }
args_array[0].dup.keep_if {|k| filter_keys.include? k}
# => {:include_blank=>true, :required=>true}
args_array.map do |elem| 
  elem.select do |k, _| 
    %i(include_blank required).include? k
  end
end
args_array[0].slice *filter_keys
# => {:include_blank=>true, :required=>true}