如何映射嵌套数组

6

我有一个数组:

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

上述方法并不完全符合我的想法(随机字母可以工作,但每一行都与上一行以相同的顺序使用相同的随机字母)。
有什么想法吗?
2个回答

12

您根本不需要进行索引。

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]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接