Arrays 如何在与数组匹配的哈希中筛选特定的键值对
我的意见是:Arrays 如何在与数组匹配的哈希中筛选特定的键值对,arrays,ruby,hash,Arrays,Ruby,Hash,我的意见是: {"id"=>34, "fname"=>"XXX", "department"=>"IT", "email"=>"xxx@example.com"} schema = [ {:type=>"string", :name=>"email", :control_type=>"email", :label=>"EMAIL"}, {:type=>"string", :name=>"fname", :control_typ
{"id"=>34, "fname"=>"XXX", "department"=>"IT", "email"=>"xxx@example.com"}
schema = [
{:type=>"string", :name=>"email", :control_type=>"email", :label=>"EMAIL"},
{:type=>"string", :name=>"fname", :control_type=>"text", :label=>"FNAME"},
{:type=>"string", :name=>"surname", :control_type=>"text", :label=>"LNAME"}
]
如何仅选择:
{"fname"=>"XXX", "email"=>"xxx@example.com"}
匹配
架构
数组的:名称
?您可以首先从架构
fields = schema.map{|f| f[:name]}
然后过滤掉您的输入:
input = {"id"=>34, "fname"=>"XXX", "department"=>"IT", "email"=>"xxx@example.com"}
input.select{|k, v| fields.include?(k)}
#=> {"fname"=>"XXX", "email"=>"xxx@example.com"}
Rails提供了一个
Hash
方法,使过滤变得非常简单。结合splat操作符*
可以编写以下代码
fields = schema.map { |e| e[:name] }
input.slice(*fields)
#=> {"fname"=>"XXX", "email"=>"xxx@example.com"}
你能告诉我们你到目前为止都做了些什么吗?谢谢。我尝试循环模式和输入,但没有得到想要的结果。