Ruby - 按顺序将数组元素放入另一个数组中

时间:2015-04-20 21:27:19

标签: ruby arrays

array1 = [ [a], [b], [c], [d], [e] ]

array2 = [1, 2, 3, 4, 5, ...]

如何将array2的每个元素放入array1的每个元素中以获得类似的内容:

array3 = [ [a, 1], [b, 2], [c, 3], [d, 4], ... ]

我尝试array1.map { |a| [a, array2.each { |b| b}] }之类的东西,但还不确定如何获得它。

谢谢!

2 个答案:

答案 0 :(得分:8)

只需使用Array#flattenArray#zip

尝试此操作
array1 = [ ['a'], ['b'], ['c'], ['d'], ['e'] ]
array2 = [1, 2, 3, 4, 5]
array1.flatten.zip(array2) 
# [["a", 1], ["b", 2], ["c", 3], ["d", 4], ["e", 5]]

可以找到有关Array#zip的更多信息here

答案 1 :(得分:2)

array1 = [ ['a'], ['b'], ['c'], ['d','e'] ]
array2 = [1, 2, 3, 4]

如果您不想改变array1array2

array1.zip(array2).map { |a1,e2| a1 + [e2] }
  #=> [["a", 1], ["b", 2], ["c", 3], ["d", "e", 4]]
array1
  #=> [ ['a'], ['b'], ['c'], ['d','e'] ]

如果您确实希望更改array1而不是array2

array1.zip(array2).map { |a1,e2| a1 << e2 }
  #=> [["a", 1], ["b", 2], ["c", 3], ["d", "e", 4]]
array1
  #=> [["a", 1], ["b", 2], ["c", 3], ["d", "e", 4]]

如果您确实希望更改array1,也可以更改array2

array1.map { |a| a << array2.shift }
  #=> [["a", 1], ["b", 2], ["c", 3], ["d", "e", 4]] 
array1
  #=> [["a", 1], ["b", 2], ["c", 3], ["d", "e", 4]] 
array2
  #=> [] 

在前两种情况下,将array1.zip(array2)替换为[array1, array2].transpose,可以使用Array#transpose代替Array#zip