【发布时间】:2021-11-09 21:06:00
【问题描述】:
我希望创建一个日历,以根据我学校的当前日期检索假期。目前,我将数据结构化为字典,其中包含字典。
const holidays = {
January: {
"Martin Luther King Jr. Day": [17]
},
February: {},
March: {
"Spring Break": [16]
},
April: {},
May: {},
June: {},
July: {
"Fourth of July": [4]
},
August: {},
September: {},
October: {},
November: {
"Thanksgiving": [25, 26]
},
December: {
"Christmas Eve": [23],
"Christmas": [25],
"Winter Break": [26, 27, 28, 29, 30, 31]
}
};
我目前的方法是检查月份,然后检查日期的数组。如果日期存在于数组中,它将拉取键值以在上课时间网页上显示它是什么假期。我尝试了不同的方法来搜索子对象的数组,但都没有成功。
这是我的尝试:
function testCase() {
for (var k in holidays) {
if (x) {
let y = holidays[x];
for (var j in y) {
if (date == y[j]) {
return a.innerHTML = Object.keys(j[x]);
} else {
return a.innerHTML = "NO FIND";
}
}
}
}
}
```
【问题讨论】:
-
使用
includes()方法搜索嵌套数组。 -
如果您对搜索功能的输入采用日期作为输入,那么我不确定这是要使用的最佳数据结构。我会通过拥有一组对象、开始和结束日期以及假期名称来简化这一点。然后,您可以比较给定的日期以查看它是否在该范围内,并且从该日期隐含月份。
-
我一直在看它
-
你不需要
Object.keys(),因为j是关键。 -
一旦发现不匹配的日期,您就会返回
NO FIND。这并不意味着数组后面没有匹配的日期。
标签: javascript arrays dictionary