根据对象中的两个字段查找数组中的元素



给定数组

const array = [
{
"state": "AK",
"classCode": "ISO_11204",
"territory": "1",
"territoryLabel": "001 - Entire State",
"finalPremOps": 0.27,
"finalPCo": 0.6,
"startDate": '1/1/2020',
"endDate": '12/31/2020'
},
{
"state": "AK",
"classCode": "ISO_11204",
"territory": "1",
"territoryLabel": "001 - Entire State",
"finalPremOps": 0.27,
"finalPCo": 0.6,
"startDate": '1/1/2021',
"endDate": '12/31/2021'
},
{
"state": "AK",
"classCode": "ISO_11204",
"territory": "1",
"territoryLabel": "001 - Entire State",
"finalPremOps": 0.27,
"finalPCo": 0.6,
"startDate": '1/1/2022',
"endDate": null
},
]

我想创建一个函数,在给定当前日期的情况下,查找介于开始日期和结束日期之间的元素。

如果当前日期超过2022年1月1日,则返回最后一个元素。如果当前日期是2021年1月2日,则返回第二个元素。如果当前日期是2020年1月2日,则返回第一个元素。

只是为了让我正确地理解它:你想创建一个能做到这一点的函数吗?

// non-optimized psuedocode:
function returnAllWithinDateRangeOf(currentDate) {
let returnArray = [];
for (let i = 0; i < array.length; i++) {
if (array[i].startDate <= currentDate && currentDate <= array[i].endDate) {
returnArray.push(array[i]);
}
}
return returnArray;
}

我假设您的示例只是为了表明您希望返回符合指定日期范围的数组的子集。如果是这样,并且数组很小,那么您可以使用上面的代码(替换伪代码部分(。否则,如果数组很大,那么要快速得到结果就很困难了。如果数组很大,你能找到缩短它的方法吗?理想情况下,数据将存储在数据库中,并使用查询数据库的方法。理想情况下,该方法允许您指定过滤器,将结果缩小到您需要的范围(在本例中为日期范围内的结果(。

最新更新