我試圖找到數組中各個值的總和,而不是將數字相加在一起。例如Ruby中的數組中的單個數字的總和
如果我有數組= [「123」,「324」,「644」] 我需要它返回每個值的總和,因此結果應該是
6,9,和14分別。由於1 + 2 + 3 = 6等... 我該如何做到這一點?
我試圖找到數組中各個值的總和,而不是將數字相加在一起。例如Ruby中的數組中的單個數字的總和
如果我有數組= [「123」,「324」,「644」] 我需要它返回每個值的總和,因此結果應該是
6,9,和14分別。由於1 + 2 + 3 = 6等... 我該如何做到這一點?
array.map { |str| str.each_char.map(&:to_i).reduce(&:+) }
對於數組中的每個字符串:將每個字符轉換爲一個整數並將它們相加。
array = ["123","324","644"]
array.map do |num_string|
num_string.chars.map(&:to_i).inject(:+)
end
=> [6, 9, 14]
2.2.0 :067 > array.each {|a| print a.split("").inject {|sum, x| sum.to_i+x.to_i}, "\t"}
6 9 14 => ["123", "324", "644"]
如果你想將這些值添加到另一個陣列
使用,
2.2.0 :068 > marray = []
=> []
2.2.0 :069 > array.each {|a| marray << a.split("").inject {|sum, x| sum.to_i+x.to_i}}
=> ["123", "324", "644"]
2.2.0 :070 > marray
=> [6, 9, 14]
你有沒有注意到@Amadan使用'each_char'而不是'chars'? 'each_char'是首選,因爲它返回一個枚舉器,而'chars'返回一個佔用空間的數組。可以將枚舉數看作一組將數值提供給塊的規則,這些值是根據需要計算的。這些值是'array'的元素。艾爾:我剛剛讀了@桑托斯關於「chars」的評論,因爲這兩者中速度更快。 :-) –