从循环中删除重复项
我有以下代码。
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