From: Kent Sibilev Date: 2006-02-09T10:38:21+09:00 Subject: Re: can map/collect return fewer values than are found in the target? items.inject([]){|a,i| a << i unless VOWELS.include?(i); a} Kent. On 2/8/06, Kelly Dwight Felkins wrote: > Is there a way for collect to return fewer items than the enumerable the > collect is running on? It looks to me like > map/collect will return at least one value for each item in the array -- > I've seen examples of how to return more items, but > not less. > > Is there a way to do this more succinctly: > > VOWELS = %w{a e i o u} > items = %w{ a b c d e f g h i} > new_items = [] > items.each do |item| > new_items << item unless VOWELS.include(item) > end > new_items > > map/collect in ruby seems very similar to map in perl except that in perl > the block can return zero or more elements. Is there an method in ruby that > is similar to perl's map? > > Thanks, > > -Kelly > >