2013-07-18 25 views
2

我有一個數組:如何映射在一個嵌套的數組

my_array = [[1,2,3,4], 
      [5,6,7,8], 
      [9,10,11,12]] 

我想遍歷每個「細胞」和值更改爲別的東西。我怎樣才能做到這一點,而不需要壓縮陣列並重新組合。喜歡的東西:

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 

上述方法並不完全變成我怎麼會認爲(隨機字母的工作,但每一行都有相同的隨機字母的最後一排,以相同的順序)

想法?

回答

7

你不需要索引的。

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

如果你想保持每個陣列的對象ID和改動的內容,那麼你可以使用replace

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

我認爲以下將工作:

my_array.map{|ar| ar.map{ "random number" } } 


my_array = [[1,2,3,4], 
     [5,6,7,8], 
     [9,10,11,12]] 
my_array.map{|ar| ar.map{ rand(100...400) }} 
# => [[345, 264, 194, 157], [325, 117, 144, 149], [303, 228, 252, 199]]