2017-04-24 1 views
1

에 배열 감소 : 나는 줄일 방법을 사용하려고하지만, 뭔가 잘못하고있을 것 한자바 스크립트 내가 타임 스탬프에 따라이 배열을 줄이기 위해 노력하고 타임 스탬프

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

이 같은 당신이 필요로하는 무엇입니까?

var result = dados.map(function (v) { 
    return { 
     Date: new Date(v["Date"]), 
     Assets: [ 
      {Group: v['Group']}, 
      {Count: v['Count']} 
     ] 
    }; 
}); 

또는 그룹을 만들어야합니까?