У меня есть массив комнат, в каждой из которых есть еще один массив disabledDays
, в котором их нельзя забронировать:
const rooms = [
{
disabledDays: [],
title: 'roomOne'
},
{
disabledDays: ['2019-07-10T01:00:00.000Z'],
title: 'roomTwo'
},
{
disabledDays: [
'2019-07-08T01:00:00.000Z',
'2019-07-09T01:00:00.000Z',
'2019-07-02T01:00:00.000Z'
],
title: 'roomThree'
},
{
disabledDays: [],
title: 'roomFour'
}
];
У меня также есть диапазон выбранных дат, которые я хотел бы использовать, чтобы найти свободные номера для:
const selectedDates = [
'2019-07-06T01:00:00.000Z',
'2019-07-07T01:00:00.000Z',
'2019-07-08T01:00:00.000Z',
'2019-07-09T01:00:00.000Z'
];
В этом случае я хочу найти rooms
с none из selectedDates
в их массиве disabledDays
.
Моя попытка до сих пор использует комбинацию map
, reject
и any
, однако в результате этого, похоже, не возвращается полная комната.
const result = map(
room => reject(
date => any(disabled => isSameDay(date, disabled), selectedDates),
prop('disabledDays', room)
),
rooms
)
Я использую функцию isSameDay
из date-fns
в качестве предиката, чтобы проверить, совпадают ли даты.