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
#=> []
В первых двух случаях вы можете использовать Array#transpose вместо Array#zip заменой array1.zip(array2)
с [array1, array2].transpose
.
Является ли значение в массиве2 индексом в array1, или вы хотите объединить массивы в соответствии с их положением в каждом массиве? –