我似乎找不到将两个数组添加在一起的方法。例如有没有办法添加 a = [1,2,3] b = [4,5,6] 得到结果 c = [5,7,9]
问问题
2747 次
3 回答
7
我没有比这更好的了:c = a.zip(b).map { |x, y| x + y }
假设您的数组具有相同的大小。
于 2012-09-25T14:10:29.397 回答
7
问题是当数组大小不同时:
a = [1,2]
b = [4,5,6]
ary = a.map.with_index{ |m,i| m + b[i].to_i }
=> [5, 7]
a = [1,2,3]
b = [4,5]
ary = a.map.with_index{ |m,i| m + b[i].to_i }
=> [5, 7, 3]
如果第二个数组较短,它可以工作。如果第一个数组较短,它会截断结果数组的长度以适应。那可能不是你想要的。
a = [1,2,3]
b = [4,5,6]
ary = a.map.with_index{ |m,i| m + b[i].to_i }
=> [5, 7, 9]
解决数组长度的问题会稍微改变一些事情。我会这样做:
a = [1,2,3]
b = [4,5]
ary = a.zip(b).each_with_object([]){ |( a,b ), m| m << a + b.to_i }
=> [5, 7, 3]
于 2012-09-25T14:16:14.480 回答
0
相同长度数组的另一种选择:
[a,b].transpose.map{|x| x.reduce :+}
添加多个数组时特别有用:
[a,b,c,d,e].transpose.map{|x| x.reduce :+}
于 2012-09-26T03:42:16.853 回答