Застрял в построении объекта на основе даты из двух отдельных массивов - PullRequest
0 голосов
/ 31 января 2019

Таким образом, у меня есть массив дат в диапазоне:

['2019-01-01, '2019-01-02', '2019-01-03'...'2019-01-30'];

и массив объектов, содержащий данные для дат в указанном выше диапазоне:

[{date: '2019-01-01', count: 2'}, {date: '2019-01-05', count: 4'}...{date: '2019-01-25', count: 3}]

Примечание, если на определенную дату нет числа между этими диапазонами в первом массиве, он вообще не появляется во втором массиве.Итак, если в первом массиве было 30 дат, во втором массиве может быть только 25 дат.

В конечном счете, я хотел бы построить массив объектов в виде:

[
 { date: '2019-01-01',
   count: 2
 },
 {
   date: '2019-01-02',
   count: 0
 },
];

Таким образом, массив будет содержать объект для каждой даты в диапазоне (из первого массива) и получит счетчик (из второго массива).Если дата не находится во втором массиве, то в массиве объектов будет установлено значение 0.

Мне очень трудно понять, как это сделать.Я пробовал разные циклы, но ничего не получилось.Кто-нибудь может указать мне правильное направление?

1 Ответ

0 голосов
/ 31 января 2019

Создать новый массив с тем же номером значения, что и range.

Для каждого значения range, отметьте counts, если уже существует счетчик.

Еслиесть один, верни его.Если их нет, верните новое «0 count».

Версия кода:

const range = [
    '2019-01-01',
    '2019-01-02',
    '2019-01-03', 
    '2019-01-04',
    '2019-01-05',
    '2019-01-06',
    '2019-01-07',
];

const counts = [
    {date: '2019-01-01', count: 2}, 
    {date: '2019-01-05', count: 4}, 
    {date: '2019-01-07', count: 3},
];

const result = range.map(date =>
  counts.find(element => element.date === date) || { date, count: 0 });

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...