将数组插入另一个第n个元素中

我有2个数组:

['a', 'b', 'c', 'd', 'e', 'f'] ['g', 'h', 'i'] 

我需要在第一个数组的每个第二个元素(或第n个)之后插入第二个数组的元素,结果是:

 ['a', 'b', 'g', 'c', 'd', 'h', 'e', 'f', 'i'] 

我有一个简单的方法吗?

您始终可以使用自定义Enumerator

 a1 = ['a', 'b', 'c', 'd', 'e', 'f'] a2 = ['g', 'h', 'i'] enum = Enumerator.new do |y| e1 = a1.each e2 = a2.each loop do y << e1.next << e1.next << e2.next end end enum.to_a #=> ["a", "b", "g", "c", "d", "h", "e", "f", "i"] 

或者对于一般情况:

 n.times { y << e1.next } 

像这样的东西:

 a = ['a', 'b', 'c', 'd', 'e', 'f'] b = ['g', 'h', 'i'] a.each_slice(2). # => [["a", "b"], ["c", "d"], ["e", "f"]] zip(b). # => [[["a", "b"], "g"], [["c", "d"], "h"], [["e", "f"], "i"]] flatten # => ['a', 'b', 'g', 'c', 'd', 'h', 'e', 'f', 'i'] 
 a=['a', 'b', 'c', 'd', 'e', 'f'] b=['g', 'h', 'i'] b.each.with_index(1) { |e,i| a.insert((3*i)-1,e) } a #=> ['a', 'b', 'g', 'c', 'd', 'h', 'e', 'f', 'i']