将数组插入另一个第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']