【发布时间】:2017-01-16 21:57:42
【问题描述】:
input = [ {"name" => "adam", "nick" => ["kuruvi", "cali"] },
{"name" => "eve", "nick" => ["cali"] },
{"name" => "enoch", "nick" => [] },
{"name" => "ebe", "nick" => ["test", "wrong"] },
{"name" => "fred", "nick" => ["da"] } ]
我想在"nick" 中选择包含"da" 和"cali" 的哈希。
input.select do |d|
d["nick"].include?("cali")
end
给予
[{"name"=>"adam", "nick"=>["kuruvi", "cali"]},
{"name"=>"eve", "nick"=>["cali"]}]
我们如何在检查中包含两个参数。例如:include?("cali","da") 这样我的结果就是
[{"name"=>"adam", "nick"=>["kuruvi", "cali"]},
{"name"=>"eve", "nick"=>["cali"]},
{"name" => "fred", "nick" => ["da"]}]
试过了
i = ["da","cali"]
input.select do |d|
d["nick"].all? { |v| i.include? v }
end
=> [{"name" => "adam", "nick" => ["kuruvi", "cali"]},
{"name" => "eve", "nick" => ["cali"]},
{"name" => "enoch", "nick" => []},
{"name" => "fred", "nick" => ["da"]}]
(但这也会返回带有"nick"=[] 的哈希)
【问题讨论】:
标签: arrays ruby select hash include