2013-02-14 43 views
0

我有两个数组:我可以将两个大小相等的数组合并到一个具有合并值子数组的数组中吗?

a = ["a1", "a2", "a3"] 
b = ["b1", "b2", "b3"] 

我想获得一个数组,看起来像:

combined = [["a1", "b1"], ["a2", "b2"], ["a3", "b3"]] 

我发现一个哈希的解决方案与Hash[a.zip b]返回:

{"a1"=>"b1", "a2"=>"b2", "a3"=>"b3"} 

这可能需要用lambda函数来解决,但是我想知道是否有一些快速的Ruby魔法使得这个更快速的单线程。

+0

嗯..允许在一个问题的结束没有前途的感谢? “预先感谢任何和所有的答案” - 删除:/ – MandM 2013-02-15 17:04:43

回答

3

我不知道为什么你有Hash参与。 Array#zip是您需要的方法。

a = ["a1", "a2", "a3"] 
b = ["b1", "b2", "b3"] 

a.zip(b) # => [["a1", "b1"], ["a2", "b2"], ["a3", "b3"]] 
+0

我没有散列涉及...我只是说,如果我已经要求返回的值是一个散列,我找到了解决方案。是的,这是有效的 - 谢谢你的答案! – MandM 2013-02-15 17:02:22

3

另外,

combined = [a, b].transpose 
+0

通过'zip()'这个方法是否有任何性能优势?我可能会在两个选项后通过铃声,但现在感谢答案 - upvoted! – MandM 2013-02-15 17:05:42

相关问题