From: Robert Klemme Date: 2008-02-12T02:09:56+09:00 Subject: Re: Deleting values of array elements On 11.02.2008 17:52, Jonas Schneider wrote: > Heya, > > I'm pretty sure theres an easy way for this: > I have a collection of objects; I want to remove 1 property (they all > have it in common) from them. > > so if > > a = [ > {:a => 'blah', :prop => '123'}, > {:a => 'blab', :prop => '234'} > ] > > I want to remove the attribute "prop" from all of them. That is not an attribute but a hash key. > I tried it with this the first time: > > a.collect {|x| y = x.to_a; y.delete(x.prop); y } > > but it doesnt seem to work; i the property isn't removed, and it would > also be bad if some other property would have the same value cause it > would get removed, too. > > I´m sure there's some a.without method or something, but I'm not able > to find it... Do you mean irb(main):001:0> a = [ irb(main):002:1* {:a => 'blah', :prop => '123'}, irb(main):003:1* {:a => 'blab', :prop => '234'} irb(main):004:1> ] => [{:a=>"blah", :prop=>"123"}, {:a=>"blab", :prop=>"234"}] irb(main):005:0> a.each {|x| x.delete :prop} => [{:a=>"blah"}, {:a=>"blab"}] ? If you want the original unmodified you can do a.map {|x| x.dup.delete :prop} Cheers robert