我有一个看起来像的二维数组

array = [["apples", 11], ["oranges", 3], ["bananas", 7], ["oranges", 4], ["apples", 6], ["oranges", 9]]

我想以某种方式收集所有匹配的字符串并对关联数组中的整数求和。
例如,我希望输出看起来像
totals_array = [["apples", 17], ["oranges", 16], ["bananas", 7]]

我在这样做的方式上不受约束,但想不出一种巧妙的方法来做到这一点。
任何帮助,将不胜感激。

最佳答案

你可以这样做:

array = [["apples", 11], ["oranges", 3], ["bananas", 7], ["oranges", 4], ["apples", 6], ["oranges", 9]]

totals_array = array.reduce(Hash.new(0)) { |h, s| h[s[0]] += s[1]; h }.to_a

或者
totals_array = array.each_with_object(Hash.new(0)) { |(name,count),hash| hash[name] += count }.to_a

关于Ruby:从二维数组中收集具有匹配元素的所有数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22683932/

10-12 23:19