Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I modify an array while I am iterating over it in Ruby?

I'm just learning Ruby so apologies if this is too newbie for around here, but I can't work this out from the pickaxe book (probably just not reading carefully enough). Anyway, if I have an array like so:

arr = [1,2,3,4,5] 

...and I want to, say, multiply each value in the array by 3, I have worked out that doing the following:

arr.each {|item| item *= 3} 

...will not get me what I want (and I understand why, I'm not modifying the array itself).

What I don't get is how to modify the original array from inside the code block after the iterator. I'm sure this is very easy.

like image 901
brad Avatar asked Nov 21 '09 00:11

brad


People also ask

How do I edit an array in Ruby?

To directly modify the array, use arr. map! {|item| item*3} . To create a new array based on the original (which is often preferable), use arr.

How do you replace an array value in Ruby?

Ruby | Array replace() function Array#replace() : replace() is a Array class method which returns an array of all combinations of elements from all arrays. Return: an array of all combinations of elements from all arrays.

What is the simplest way to iterate through the items of an array Ruby?

The Ruby Enumerable#each method is the most simplistic and popular way to iterate individual items in an array. It accepts two arguments: the first being an enumerable list, and the second being a block. It takes each element in the provided list and executes the block, taking the current item as a parameter.


1 Answers

Use map to create a new array from the old one:

arr2 = arr.map {|item| item * 3} 

Use map! to modify the array in place:

arr.map! {|item| item * 3} 

See it working online: ideone

like image 142
Mark Byers Avatar answered Sep 27 '22 18:09

Mark Byers