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.