如何仅基于键从哈希数组中删除重复项?

Mar*_*rco 1 ruby hash

您将如何根据密钥删除重复

values = [{"a"=>"1"}, {"a"=>"2"}, {"b"=>"1"}, {"a"=>"4"}]
Run Code Online (Sandbox Code Playgroud)

如何忽略该值并uniq基于运行以便返回:

[{'a' => '1'}, {'b' => '1'}]
Run Code Online (Sandbox Code Playgroud)

Rob*_*own 5

假设您不关心哪个值被破坏,只需将它们运行到散列(它具有唯一键,因此可能是这种情况下的正确集合类):

h = {}
values.each{|i|i.each{|k,v|h[k] = v}}
puts h # => {"a"=>"4", "b"=>"1"}
Run Code Online (Sandbox Code Playgroud)

...或者如果你想要每个键的第一个:

h = {}
values.each{|i|i.each{|k,v|h[k] = v unless h[k]}}
Run Code Online (Sandbox Code Playgroud)

如果你想回到一个数组:

h.each{|k,v|a << {k=>v}}
Run Code Online (Sandbox Code Playgroud)