这是一个更简单的方法。它利用了您传递数组的顺序zip
:
def interleave(a, b)
if a.length >= b.length
a.zip(b)
else
b.zip(a).map(&:reverse)
end.flatten.compact
end
interleave([21, 22], [31, 32, 33])
# => [21, 31, 22, 32, 33]
interleave([31, 32, 33], [21, 22])
# => [31, 21, 32, 22, 33]
interleave([], [21, 22])
# => [21, 22]
interleave([], [])
# => []
请注意:这会删除所有nil
's:
interleave([11], [41, 42, 43, 44, nil])
# => [11, 41, 42, 43, 44]