From: Paul Smith Date: 2009-09-26T00:58:46+09:00 Subject: Re: How to remove duplicate elements in a 2D array On Fri, Sep 25, 2009 at 4:52 PM, Paul Smith wrote: > On Fri, Sep 25, 2009 at 4:39 PM, Paul Smith wrote: >> On Fri, Sep 25, 2009 at 4:34 PM, Li Chen wrote: >>> Hi all, >>> >>> I have a 2D array as follow: >>> >>> arr=[ >>> >>>     [ 'a',1,2,3], >>>     ['b',4,5,6], >>>     ['c',3,2,1], >>>     ['a',1.3,2.2,3,3], >>>     ... >>>     ['a', 2,1,3], >>>   ... >>>   ['a',2.1,1.5,3] >>> >>> ] >>> >>> As you can see there are several rows containing  element 'a', >>> and the last row containing 'a'' is the lastest one.  I wonder if it >>> is possible to return a new array which contains the latest row having >>> 'a' , >>> together with other rows. >> >> result = [] >> arr.each { |x| result = x if x[0] == 'a' } >> result >> >> ? > > Sorry, this only solves the "Last row containing a" part of the > problem.  If you're intending to eliminate duplicates, then use that > first element as the key to a hash. > > result = {} > arr.each{|x| result[x[0]] = x[1,x.length-1]} > I knew there was a a better way to do this: arr.each{|x| result[x[0]] = x[1..-1]} is a more succinct second line. -- Paul Smith http://www.nomadicfun.co.uk paul@pollyandpaul.co.uk