У меня есть данные JSON, структура которых выглядит следующим образом:
data = [
{
"id": 100,
"floorplans": [
{
"bhk": 1,
...some other fields
},
{
"bhk": 3,
...some other fields
},
{
"bhk": 2,
...some other fields
}
],
"possession_date": "2016-08-21"
},
{
"id": 200,
"floorplans": [
{
"bhk": 1.5,
...some other fields
},
{
"bhk": 1,
...some other fields
},
{
"bhk": 2.5,
...some other fields
}
],
"possession_date": "2017-08-21"
},
{
"id": 300,
"floorplans": [
{
"bhk": 1,
...some other fields
},
{
"bhk": 4,
...some other fields
},
{
"bhk": 2,
...some other fields
}
],
"possession_date": "2018-08-21"
}]
Теперь данные выше хранятся в массиве filterOptions.Теперь пример filterOptions:
filterOptions ["Ready", 2, 4, 1] -> это означает, что отфильтровываются все данные с включенным 2,4,1 BHK, а также те данные, которые имеютion_date <текущая дата </p>
filterOptions ["В разработке", 3] -> это означает, что фильтровать все данные, для которых есть 3 BHK, а также те данные, которые имеютion_date> текущая дата
Итак, у меня есть следующий код:
Примечание: я использую .slice (), потому что сравниваю дату формы YYYY-MM-DD
.
function checkStatus(options, date) {
console.log("Status: ", options)
const currentTime = moment().format();
let d1 = Date.parse(currentTime.slice(0,10));
let d2 = Date.parse(date.slice(0,10));
if(options.includes("Ready")){
if(d1 > d2)
return true;
} else if(options.includes("Under construction")){
if(d1 < d2)
return true;
}
}
var display_filtered_projects = data.filter(
(item) => item.floorplans.some(val => filterOptions.includes(val.bhk))
&& checkStatus(filterOptions, item.possession_date));
console.log("display_filtered_projects: ", display_filtered_projects);
Если я удаляю checkStatus(filterOptions, item.possession_date)
, тогда фильтр работает отлично, но только дляТип BHK.Теперь я должен объединить это с датой, как я могу это сделать?