2012-09-25 57 views
2

我似乎無法找到一種方法將兩個陣列添加在一起。例如有一種方法來添加 A = [1,2,3] B = [4,5,6] 得到結果 C = [5,7,9]添加兩個紅寶石陣列

+0

當一個陣列具有比所述多個元件,會發生什麼其他? –

回答

6

問題是,當陣列是不一樣的尺寸:

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] 
+0

工作很好,謝謝! – user1516050

6

我不噸比這更好:c = a.zip(b).map { |x, y| x + y }

假設你的數組具有相同的大小。

+0

啊,我怎麼錯過'zip_with'。 –

0

爲相同長度的陣列的另一個選項:

[a,b].transpose.map{|x| x.reduce :+} 

特別有用的添加時多個陣列:

[a,b,c,d,e].transpose.map{|x| x.reduce :+}