如何将数组添加到二维数组

时间:2014-11-27 15:10:27

标签: ruby

我想将数组添加到二维数组中,如下所示:

arrays = [[8300, 6732, 4101, 3137, 3097], [1088, 647, 410, 138, 52], [623, 362, 191, 25, 0]]
new_array = [10, 100, 1000]
arrays.map.with_index{|v,i| v << new_array[i]}
# => [[8300, 6732, 4101, 3137, 3097, 10], [1088, 647, 410, 138, 52, 100], [623, 362, 191, 25, 0, 1000]]

它运作良好,但我想知道是否有更简单的方法来完成此行为。

我感谢任何建议。

3 个答案:

答案 0 :(得分:2)

arrays.zip(new_array).map(&:flatten)
# => [[8300, 6732, 4101, 3137, 3097, 10], [1088, 647, 410, 138, 52, 100], [623, 362, 191, 25, 0, 1000]] 

答案 1 :(得分:1)

您可以使用zip

arrays.zip(new_array).each { |arr, item| arr << item }
arrays
# =>  [[8300, 6732, 4101, 3137, 3097, 10], [1088, 647, 410, 138, 52, 100], [623, 362, 191, 25, 0, 1000]]

答案 2 :(得分:1)

向Santosh回答一点延伸。如果存在嵌套数组,并且您希望结果与原始数组(如

)一样嵌套
arrays = [[8300, [6732], 4101, [3137], 3097], [1088, [647], 410, 138, 52], [623, [362], 191, 25, 0]]
new_array = [10, [100], 1000]

required_answer = [[8300, [6732], 4101, [3137], 3097, 10], [1088, [647], 410, 138, 52, 100], [623, [362], 191, 25, 0, 1000]] 

然后你可以使用

arrays.zip(new_array).map{|x| x.flatten(1)}

这会将数组压平到一个级别。