如何组合2个这样的数组
a = ["x","y","z"]
b = [["a","b"],["c","d"],["e","f"]]
预期产出:
[["a","b","x" ],["c","d","y"],["e","f","z"]]
有内置方法吗?
答案 0 :(得分:6)
有。您可以将Array#zip
与Array#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"]]