hash的Ruby过滤数组
我有以下参数数组,其中包含一个带有args键及其相关传递值的散列: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_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}