input = [ {"name" => "adam", "nick" => ["kuruvi", "cali"] },
{"name" => "eve", "nick" => ["cali"] },
{"name" => "enoch", "nick" => [] },
{"name" => "ebe", "nick" => ["test", "wrong"] },
{"name" => "fred", "nick" => ["da"] } ]
I want to select hashes which contains "da" & "cali" in "nick".
input.select do |d|
d["nick"].include?("cali")
end
gives
[{"name"=>"adam", "nick"=>["kuruvi", "cali"]},
{"name"=>"eve", "nick"=>["cali"]}]
How can we include two parameters in check. Eg: include?("cali","da") so that my result will be
[{"name"=>"adam", "nick"=>["kuruvi", "cali"]},
{"name"=>"eve", "nick"=>["cali"]},
{"name" => "fred", "nick" => ["da"]}]
Tried this
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"]}]
(but this returns hashes with "nick"=[] also)