jis*_*ssy 0 ruby hash ruby-on-rails
我有以下列表:
hash_list =
{ "a"=>{"unit_id"=>"43", "dep_id"=>"153","_destroy"=>"false"},
"b"=>{"unit_id"=>"43", "dep_id"=>"153", "_destroy"=>"1"},
"c"=>{"unit_id"=>"43", "dep_id"=>"154", "_destroy"=>"false"},
"d"=>{"unit_id"=>"42", "dep_id"=>"154", "_destroy"=>"false"}
}
Run Code Online (Sandbox Code Playgroud)
我需要结果如下:
{
"a"=>{"unit_id"=>"43", "dep_id"=>"153", "_destroy"=>"false"},
"b"=>{"unit_id"=>"43", "dep_id"=>"153", "_destroy"=>"1"},
"d"=>{"unit_id"=>"42", "dep_id"=>"154", "_destroy"=>"false"}
}
Run Code Online (Sandbox Code Playgroud)
基本上,不unit_id应该重复.但是,所有_destroy=="1"条目都可以出现在列表中.
请帮忙.
试试这个:
> hash_list.to_a.uniq{|_,v|v["unit_id"] unless v["_destroy"] == "1"}.to_h
#=> {
"a"=>{"unit_id"=>"43", "dep_id"=>"153", "_destroy"=>"false"},
"b"=>{"unit_id"=>"43", "dep_id"=>"153", "_destroy"=>"1"},
"d"=>{"unit_id"=>"42", "dep_id"=>"154", "_destroy"=>"false"}
}
Run Code Online (Sandbox Code Playgroud)
这将检查为unit_iduniq,并且还会出现"_destory" == "1"您提到的条目.