2016-11-12 1 views
0

"마지막 날 사용자 등록"차트의 데이터를 준비하려면 lodash를 사용하고 싶습니다. 내가 일 마지막 날 (24 시간)에 걸쳐 사용자 등록을 repesent ChartJS와 차트를 만들 필요가lodash를 사용하여 "최종 사용자 등록"차트의 데이터 준비

{ 
    name: toto, 
    creationDate: 11/11/2016 11:00:00 
}, 
{ 
    name: tata, 
    creationDate: 11/11/2016 10:00:00 
}, 
{ 
    name: titi, 
    creationDate: 09/11/2016 10:00:00 
} 

:

여기 내 사용자의 배열입니다.

내가 GROUPBY를 사용하는 경우 :

var grouped = _.groupBy(users, function (user) { 
     return moment(user.creationDate).get('hour'); 
    }); 

나는 "빈"시간을 가질 수 없습니다, 최종 배열에는 사용자 등록이 없다.

labels = ['18', '17', '16', ... '18'] 
data = [['1', '1', '12, ... '3']] 

당신이 도와주세요 수 :

목적은이 (의 그것에서 18 시간의시이라고하자)하는 것입니다?

답변

1

당신은 defauls 빈 배열 객체를 생성하고 _.defaults을 적용 할 수 있습니다 : 그 후

var hours = _.range(0,24); 
var defaultHours = _.zipObject(hours, _.map(hours, function(){return [];})); 

_.defaults(grouped, defaultHours); 

, grouped을 더 등록 없었다 시간 동안 찾은 값 또는 빈 배열을 개최한다.

+0

"지난 24 시간"만 계산해야한다는 사실을 알고 있습니까? 나는 등록이 15 일에 이틀 전에 끝난다면 오늘 15 일에 15 번을 계산합니까? – Elwyn

+1

원래 코드는 그렇지 않았기 때문에 그렇지 않습니다. 먼저 24 시간이 넘은 항목을 필터링해야합니다. var recentUsers = _.filter (users, function (user) { 반환 순간 (user.creationDate) .diff (Date.now(), 'hours', true) <24; } 다음 groupBy 작업을 수행하십시오. recentUsers에 – Meir

+0

감사합니다, 그것은 일하고 있고 물건을하고있어! – Elwyn