2017-04-24 66 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

你需要的是这样的事情?您是否需要创建组?