Использование lodash для подготовки данных к графику "регистрация пользователей в последний день"

Я хочу использовать 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
}

Мне нужно создать диаграмму с ChartJS, которая повторяет регистрацию пользователей за последний день (24 часа).

Если я использую groupBy:

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

У меня не может быть "пустых" часов, когда нет регистрации пользователя, в конечном массиве.

Цель состоит в том, чтобы иметь это (скажем, это 18 часов):

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

Не могли бы вы помочь?

1 ответ

Решение

Вы можете создать объект по умолчанию с пустыми массивами и применить _.defaults:

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

_.defaults(grouped, defaultHours);

После этого, grouped будет содержать найденные вами значения или пустой массив в течение нескольких часов без регистрации.

Другие вопросы по тегам