从循环中删除重复项

我有以下代码。

for i in 0..sold.length-1 duplicate = sold[i] print duplicate.check_duplicates print " " print sold[i].lotnumber + "\t" print sold[i].serialnumber end 

这将打印

  1 29371 43 1 13797 6 1 08114 55 1 70657 106 1 32741 74 2 07272 103 2 07272 103 1 37416 14 1 05153 177 1 54338 115 3 74522 171 3 74522 171 3 74522 171 

我如何删除重复项(3 74522 171和2 07272 103),因此每个只有1个?

由group_by方法产生的散列可以用作计数设备; 这不使用check_duplicates方法。

 grouped = sold.group_by{|item| [item.lotnumber, item.serialnumber]} grouped.each{|key, value| puts "#{value.size} #{key.first}\t#{key.last}"} 
 uniq_solds = sold.collect{|s| [s.check_duplicates, s.lotnumber, s.serialnumber]}.uniq uniq_solds.each do |s| p s.join(" ") end 

您可以尝试使用名为uniq!的东西,这里是API的链接。

http://www.ruby-doc.org/core-2.0.0/Array.html#method-i-uniq-21