2017-04-24 55 views
1

陣列我試圖減少基於時間戳此陣:的JavaScript減少對時間戳

Var Data = [{"Group":"OPS","Date":"2017-04-18T00:00:00.000Z","Count":1},{"Group":"BOE","Date":"2017-04-19T00:00:00.000Z","Count":1},{"Group":"EDW","Date":"2017-04-21T00:00:00.000Z","Count":1},{"Group":"SUPPORT","Date":"2017-04-17T00:00:00.000Z","Count":1},{"Group":"EDWEXTRACTS","Date":"2017-04-17T00:00:00.000Z","Count":1},{"Group":"EDWEXTRACTS","Date":"2017-04-18T00:00:00.000Z","Count":1},{"Group":"SAFTT","Date":"2017-04-17T00:00:00.000Z","Count":1},{"Group":"SAFTT","Date":"2017-04-18T00:00:00.000Z","Count":2},{"Group":"SAFTT","Date":"2017-04-21T00:00:00.000Z","Count":1},{"Group":"OPS","Date":"2017-04-17T00:00:00.000Z","Count":1},{"Group":"VIEW","Date":"2017-04-17T00:00:00.000Z","Count":1},{"Group":"VIEW","Date":"2017-04-19T00:00:00.000Z","Count":3}] 

我試圖用減少的方法,但似乎是做錯了什麼。

var obj = {} 

result.reduce(function(r, e) { 
    if (!obj[e.Date]) { 
    obj[e.Date] = { 
     Date: e.Date, 
     Assest: [] 
    } 
    r.push(obj[e.Date]) 
    } 
    obj[e.Date].Date.push(e.Group) 
    obj[e.Date].Date.push(e.Count) 
    return r 
}, []) 

console.log(JSON.stringify(result, 0, 4)) 

我期望的結果將是:

Var New_Data = [{"Date":"xx/xx/xx", "Assets":[{"group":"XXX"},{"Count":"X"}]},{"Date":"xx/xx/xx","Assets":[{"group":"XXX"},{"Count":"X"}]}] 

任何想法我怎麼能做到這一點,任何幫助將是巨大的。 謝謝=)

回答

2

下面的代碼是一個工作的例子。有了這個,你應該能夠改變它到你的確切規格,如果它們與我實施的不同。

var Data = [ 
 
    {"Group":"OPS","Date":"2017-04-18T00:00:00.000Z","Count":1}, 
 
    {"Group":"BOE","Date":"2017-04-19T00:00:00.000Z","Count":1}, 
 
    {"Group":"EDW","Date":"2017-04-21T00:00:00.000Z","Count":1}, 
 
    {"Group":"SUPPORT","Date":"2017-04-17T00:00:00.000Z","Count":1}, 
 
    {"Group":"EDWEXTRACTS","Date":"2017-04-17T00:00:00.000Z","Count":1}, 
 
    {"Group":"EDWEXTRACTS","Date":"2017-04-18T00:00:00.000Z","Count":1}, 
 
    {"Group":"SAFTT","Date":"2017-04-17T00:00:00.000Z","Count":1}, 
 
    {"Group":"SAFTT","Date":"2017-04-18T00:00:00.000Z","Count":2}, 
 
    {"Group":"SAFTT","Date":"2017-04-21T00:00:00.000Z","Count":1}, 
 
    {"Group":"OPS","Date":"2017-04-17T00:00:00.000Z","Count":1}, 
 
    {"Group":"VIEW","Date":"2017-04-17T00:00:00.000Z","Count":1}, 
 
    {"Group":"VIEW","Date":"2017-04-19T00:00:00.000Z","Count":3} 
 
]; 
 

 
Data = Data.reduce(function(r, e) { 
 
    var date = e.Date.match(/(\d+-\d+-\d+)/)[0].replace(/-/g, '/'); 
 

 
    if (r[date] == undefined) { 
 
     r[date] = {Date: date, Assets: []}; 
 
    } 
 
    
 
    r[date].Assets.push({Group: e.Group}); 
 
    r[date].Assets.push({Count: e.Count}); 
 
    
 
    return r 
 
}, {}); 
 

 
console.log(Data);

您可能需要生成的對象轉換爲數組:

new_data = []; 
for(i in Data){ 
    new_data.push(Data[i]); 
} 
+0

我正在尋找保持唯一的日期。 我該怎麼做呢? –

+0

我會更新我的答案。發佈問題時請填寫完整。 – Thakkie

+0

謝謝,對不起,沒有發佈完整的問題,這是我第一次 –

0

你需要的是這樣的事情?您是否需要創建組?