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}] }
之类的东西,但还不确定如何获得它。
谢谢!
答案 0 :(得分:8)
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]
如果您不想改变array1
或array2
:
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。