2015-06-12 85 views
0

我有陣列的下面陣列[日期,值]:從紅寶石數組中刪除重複記錄,總結

array = [[12 Mar 2015, 0], [12 Mar 2015, 5], [13 Mar 2015, 0], [14 Mar 2015, 49], [15 Mar 2015, 51], [15 Mar 2015, 10], [16 Mar 2015, 110], [17 Mar 2015, 0], [18 Mar 2015, 31], [19 Mar 2015, 47], [20 Mar 2015, 0], [21 Mar 2015, 0], [22 Mar 2015, 138], [22 Mar 2015, 10], [23 Mar 2015, 0]] 

你可以看到,有重複的日期陣列。在按日期分組的同時,如何總結這些值?這就是我要找:

array = [[12 Mar 2015, 5], [13 Mar 2015, 0], [14 Mar 2015, 49], [15 Mar 2015, 61], [16 Mar 2015, 110], [17 Mar 2015, 0], [18 Mar 2015, 31], [19 Mar 2015, 47], [20 Mar 2015, 0], [21 Mar 2015, 0], [22 Mar 2015, 148], [23 Mar 2015, 0]] 
+1

'[2015年3月12日,0]',你怎麼能指望它的工作?它應該是'[「2015年3月13日,0,' –

回答

2

修訂

非常感謝@nathanvda,inject({}) do |hash, [time, index]|是我的錯誤。無論如何,他的解決方案更清晰。

array.inject({}) do |hash, item| 
    time, index = item.to_a 
    hash[time] = hash.fetch(time, 0) + index 
    hash 
end.to_a 
+0

這甚至不是正確的ruby語法。如果我運行它不起作用。塊的第二個參數不能是'[time,index]'。這是公認的答案?奇怪的。 – nathanvda

+0

謝謝。這絕對是我的錯誤 –

3

你的天陣應該像

array = [["12 Mar 2015", 0], ["12 Mar 2015", 5], ["13 Mar 2015", 0], ["14 Mar 2015", 49], ["15 Mar 2015", 51], ["15 Mar 2015", 10], ["16 Mar 2015", 110], ["17 Mar 2015", 0], ["18 Mar 2015", 31], ["19 Mar 2015", 47], ["20 Mar 2015", 0], ["21 Mar 2015", 0], ["22 Mar 2015", 138], ["22 Mar 2015", 10], ["23 Mar 2015", 0]] 

grouped = array.inject(Hash.new(0)) do |result, itm| 
    result[itm.first] += itm.last 
    result 
end.to_a