Dylan Richards Dylan Richards - 4 months ago 7
Ruby Question

Replace all zeros in array with elements of another array

Say I've got an array like this:

array_1 = [0, 0, 1, 2, 3, 0]


and another one like this:

array_2 = [4, 5, 6]


How can I create an array like this, such that each 0 in the
array_1
is replaced by the first and subsequent elements of the
array_2
?:

[4, 5, 1, 2, 3, 6]


That is, every time we encounter a
0
in the first array, we'd like to replace it with the result of
array_2.shift
.

Answer

You could do something like this, iterate and shift when you encounter a 0

array_1.each_with_index do |val, i|
  array_1[i] = array_2.shift if val == 0
end
Comments