From: Tiago Nogueira Date: 2009-01-15T20:42:27+09:00 Subject: Re: Returning a duplicate from an Array Jimmy Kofler escreveu: >> Pierre Pat wrote: >> I'd do like this: >> a.select{|x| a.index(x) != a.rindex(x)}.uniq >> >> Now, I wouldn't know which one is more efficient, but coding wise, I >> like that way :-) >> > > Here's yet another take on it: > > class Array > def dups > uniq.select{ |e| (self-[e]).size < self.size - 1 } > end > end > > p [ 1, 1, 2, 2, 3, 3, 4, 5 ].dups #=> [1, 2, 3] > > see: http://snippets.dzone.com/posts/show/4148 > > Cheers, > > j.k. > I Think that the way : class Array def dups uniq.select{ |e| (self-[e]).size < self.size - 1 } end end p [ 1, 1, 2, 2, 3, 3, 4, 5 ].dups #=> [1, 2, 3] is more elegant! tiago