How to map over a nested array

arrays, multidimensional-array, ruby

Solution

You don't need indexing at all.

my_array.map{|row| row.map{random_letter}}

If you want to retain the object id of each array and change the content, then you can use `replace`.

my_array.each{|row| row.replace(row.map{random_letter})}

Problem

I have an array: ``` my_array = [[1,2,3,4], [5,6,7,8], [9,10,11,12]] ``` I want to iterate over each "cell" and change the value to something else. How can I do this without flattening the array and recomposing. Something like: ``` my_array.each_with_index do |row, row_index| row.each_with_index do |cell, col_index| my_array[row_index][col_index] = random_letter end end ``` The above method doesn't exactly turn out how I would think (the random letter's work, but each row has the same random letters as the last row, in the same order) Thoughts?

Original source