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

时间:2016-12-06 09:01:59

标签: ruby-on-rails ruby

我有2个阵列:

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

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

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

我有一个简单的方法吗?

3 个答案:

答案 0 :(得分:8)

您始终可以使用自定义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 }

答案 1 :(得分:7)

这样的事情:

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']

答案 2 :(得分:2)

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']