在Ruby中合并和交错两个数组

107

我有以下代码:

a = ["Cat", "Dog", "Mouse"]
s = ["and", "&"]

我想将数组s合并到数组a中,这将给我:

["Cat", "and", "Dog", "&", "Mouse"]

查看 Ruby 数组和 Enumerable 文档,我没有找到可以完成这个任务的方法。

有没有一种方法可以不通过遍历每个数组来实现这个目标?


a数组将始终具有3个元素,而s数组则有两个?提供一些更多的示例会更有帮助。 - tokland
13个回答

0
def merge_and_interleave(arr_a, arr_b)
  final_arr = [] 

  until arr_a.empty? && arr_b.empty?
    final_arr << arr_a.shift unless arr_a.empty?
    final_arr << arr_b.shift unless arr_b.empty? 
  end

  final_arr
end

这会清空传递的数组,甚至没有记录下来。 - greybeard

0

交错任意大小的二维数组

arr = [["Cat", "Dog", "Mouse"],
 ["and", "&"],
 ["hello", "there", "you", "boo", "zoo"]]

max_count = arr.map(&:count).max
max_count.times.map{|i| arr.map{|a| a[i]}}.flatten.compact

#=> ["Cat", "and", "hello", "Dog", "&", "there", "Mouse", "you", "boo", "zoo"]

-2
arr = [0, 1]
arr + [2, 3, 4]

//outputs [0, 1, 2, 3, 4]

5
抱歉...没有注意到您想要的输出顺序。对于试图帮助造成的困扰,我道歉了。不会再发生。 - David Morrow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接