我不清楚你在问什么。我最好的猜测是给定单关联哈希数组:
array = [{:col1 => 'aaa'}, {:col2 => 'bbb'}, {:col3 => 'aaa'}]
您希望每个哈希值只有一个哈希;也就是说,删除最后一个 Hash,因为它和第一个都有'aaa'作为它们的值。如果是这样,那么这个:
array.uniq{|item| item.values.first}
# => [{:col1=>"aaa"}, {:col2=>"bbb"}]
做你想做的。
我想象的另一种可能性是给定这样的数组:
array2 = [{:col1 => 'a', :col2 => 'b', :col3 => 'c', :col4 => 'x'},
{:col1 => 'd', :col2 => 'b', :col3 => 'c', :col4 => 'y'},
{:col1 => 'a', :col2 => 'b', :col3 => 'c', :col4 => 'z'}]
您想排除最后一个哈希,因为 、 和 的值:col1与:col2第:col3一个哈希相同。如果是这样,那么这个:
array2.uniq{|item| [item[:col1], item[:col2], item[:col3]]}
# => [{:col1=>"a", :col2=>"b", :col3=>"c", :col4=>"x"},
# {:col1=>"d", :col2=>"b", :col3=>"c", :col4=>"y"}]
做你想做的。
如果这些猜测都不是您真正想要的,您需要澄清您的要求,最好包括一些示例输入和所需的输出。
我还要指出,您很有可能在数据库查询级别完成您想要的,这取决于许多未提供的因素。