Sean O'Halpin wrote: > On 10/28/07, Shuaib Zahda <shuaib.zahda / gmail.com> wrote: > >> Hello >> >> I am trying to output the duplicate elements in an array. I looked into >> the api of ruby I found uniq method which outputs the array with no >> duplication. What i want is to know which elements is duplicated. >> For example >> >> array = ["apple", "banana", "apple", "orange"] >> => ["apple", "banana", "apple", "orange"] >> array.uniq >> => ["apple", "banana", "orange"] >> >> I want the method to tell me that apple is the duplicated element >> >> I tried this but it does not work >> >> array - array.uniq >> >> any idea >> >> Regards >> Shuaib >> -- >> Posted via http://www.ruby-forum.com/. >> >> Here's one way (I'm sure there must be a simpler approach - just can't >> > think of it right now): > > array = ["apple", "banana", "apple", "orange"] > counts = array.inject(Hash.new {|h,k| h[k] = 0 }) { |hash, item| hash[item] > += 1; hash} > p counts #=> {"apple"=>2, "banana"=>1, "orange"=>1} > p counts.select { |k,v| v > 1 }.map{ |k, v| k}.flatten #=> ["apple"] > > > Regards, > Sean > > I so have to get the hang of inject, flatten and map. Cheers, Mohit. 10/28/2007 | 9:16 PM.