< :the previous in number
^ :the list in numerical order
> :the next in number
P :the previous (in thread)
N :the next (in thread)
|<:the top of this thread
>|:the next thread
^ :the parent (reply-to)
_:the child (an article replying to this)
>:the elder article having the same parent
<:the youger article having the same parent
---:split window and show thread lists
| :split window (vertically) and show thread lists
~ :close the thread frame
.:the index
..:the index of indices
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.