Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Ruby Programming Language

delete in Array (if exist) and count


I am trying to delete an element from an array if it exists and count
the number of item afterwards

I wrote

anArray = [1,2,3,4,5,6,7,8,9]
anArray.size
=> 9
anArray.map {|e| e if e != 4}.compact
=> [1, 2, 3, 5, 6, 7, 8, 9]
 anArray.map {|e| e if e != 4}.compact.size
=> 8

is ther a better way to do it... it it's enough ? (learning always how
to write better code..)

thanks

joss

Josselin wrote:
> I am trying to delete an element from an array if it exists and count
> the number of item afterwards

How about using Array#delete_if?

--
RMagick OS X Installer [http://rubyforge.org/projects/rmagick/]
RMagick Hints & Tips [http://rubyforge.org/forum/forum.php?forum_id=1618]
RMagick Installation FAQ [http://rmagick.rubyforge.org/install-faq.html]

On 6/3/07, Josselin <josse@wanadoo.fr> wrote:

Array#delete works also with no need for a block (i.e. you're only
checking for equality)

anArray = [1,2,3,4,5,6]
p anArray.delete(4)
p anArray.size

On 2007-06-03 16:57:43 +0200, "Todd Benson" <caduce@gmail.com> said:

I checked
anArray.delete(0)
=> nil
then
anArray.delete(0).size
NoMethodError: undefined method `size' for nil:NilClass

as I tried to write it in one line....

thanks

joss

On 2007-06-03 16:35:16 +0200, Tim Hunter <TimHun@nc.rr.com> said:

> Josselin wrote:
>> I am trying to delete an element from an array if it exists and count
>> the number of item afterwards

> How about using Array#delete_if?

that's exactly what I want... I read the API doc, I look into the
delete.. but why I stop before the delete_if ?????
thanks a lot ..

Joss

On 6/3/07, Josselin <josse@wanadoo.fr> wrote:

That's because Array#delete returns the deletion, not the Array
itself, so, if it has to be on one line, then:

(anArray.delete(4); a).size

or

anArray.delete_if {|i| i == 4}.size

or I prefer

anArray.reject! {|i| i == 4}.size

#delete, #delete_if, and #reject! all change the array while #reject does not

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc