2017-04-18 92 views
0

對象的數組假設我有對象中的CoffeeScript以下數組:減少和總結基於關鍵

data = [ 
    {date: "04/27/2017", number: 1}, 
    {date: "04/28/2017", number: 2}, 
    {date: "04/27/2017", number: 3}, 
    {date: "04/29/2017", number: 4}, 
    {date: "04/29/2017", number: 5} 
] 

我想用日期值求和數值,創造這個新的數組:

new_data = [ 
    {date: "04/27/2017", number: 4}, 
    {date: "04/28/2017", number: 2}, 
    {date: "04/29/2017", number: 9} 
] 

這似乎是合理的使用方法reduce,像:

new_data = data.reduce (x, y) -> 
    some logic 

但我不能爲我的生活出/找到這樣的一種方式......

回答

0

你可以做你在2想要什麼步驟

  1. 組值單個對象

    let reducer = (acc, cur) => { 
        if (acc[cur.date] === undefined) 
        acc[cur.date] = cur.number 
        else 
        acc[cur.date] = acc[cur.date] + cur.number 
        return acc; 
    } 
    
    let grouped = data.reduce(reducer, {}); 
    
  2. 地圖對象到一個Array

    Object.keys(counterRes).map((date) => { return { date, number: grouped[date] } }) 
    

最終的結果就是你所追求的。