You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中访问嵌套字典结构实现按日期查询校园节假日功能

节假日匹配功能实现方案

原代码问题梳理

  • 缺少x(月份)、date(当前日期)、a(页面渲染元素)等核心变量的定义,逻辑不完整
  • 内层循环首次判断失败就直接返回NO FIND,无法遍历完当月所有节假日配置
  • 直接用日期值和数组做相等判断,逻辑不成立,需要用数组的includes()方法判断元素是否存在
  • 节假日名称取值逻辑错误,遍历对象时的键本身就是节假日名称,无需额外提取key

完整可运行实现

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 getHoliday() {
  const now = new Date();
  // 获取英文月份名,匹配holidays的key
  const currentMonth = now.toLocaleDateString('en-US', { month: 'long' });
  const currentDay = now.getDate();
  const monthConfig = holidays[currentMonth];
  // 当月无节假日配置直接返回
  if (!monthConfig) return "NO FIND";
  // 遍历当月所有节假日匹配日期
  for (const holidayName in monthConfig) {
    if (monthConfig[holidayName].includes(currentDay)) {
      return holidayName;
    }
  }
  return "NO FIND";
}

// 渲染结果到页面,替换为你自己的页面元素ID
const displayElement = document.getElementById('holiday-display');
displayElement.innerHTML = getHoliday();

自定义测试方法

如果需要测试指定日期的匹配效果,只需要修改日期生成逻辑即可,示例:

// 测试11月25日,注意JS月份从0开始计数,10对应11月
const now = new Date(2024, 10, 25);

内容的提问来源于stack exchange,提问作者grum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:54:03