我有一个数组:
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
上述方法并不完全证明我的想法(随机字母的工作,但每行与最后一行有相同的随机字母,顺序相同)
思想?
答案 0 :(得分:9)
您根本不需要编制索引。
my_array.map{|row| row.map{random_letter}}
如果您想保留每个数组的对象ID并更改内容,则可以使用replace
。
my_array.each{|row| row.replace(row.map{random_letter})}
答案 1 :(得分: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]]