如何在尊重其原始索引的同时提取数组的元素并将其插入另一个元素中

时间:2016-11-04 16:57:21

标签: arrays ruby

如何组合2个这样的数组

a = ["x","y","z"]
b = [["a","b"],["c","d"],["e","f"]]

预期产出:

[["a","b","x" ],["c","d","y"],["e","f","z"]]

有内置方法吗?

4 个答案:

答案 0 :(得分:6)

有。您可以将Array#zipArray#flatten结合使用:

b.zip(a).map(&:flatten)
#=> [["a", "b", "x"], ["c", "d", "y"], ["e", "f", "z"]]

答案 1 :(得分:3)

另一种方式是:

[b, a].transpose.map(&:flatten)
#=> [["a", "b", "x"], ["c", "d", "y"], ["e", "f", "z"]]

:)

答案 2 :(得分:2)

以下是另一种方法:

a = ["x","y","z"]
b = [["a","b"],["c","d"],["e","f"]]

b.map.with_index {|arr, idx| arr << a[idx]}
#=> [["a", "b", "x"], ["c", "d", "y"], ["e", "f", "z"]]

答案 3 :(得分:1)

enum = a.to_enum
b.map { |arr| arr << enum.next }
  #=> [["a", "b", "x"], ["c", "d", "y"], ["e", "f", "z"]]